代码之家  ›  专栏  ›  技术社区  ›  fitzbutz

使用qt4的简单菜单栏

  •  0
  • fitzbutz  · 技术社区  · 15 年前

    我正在尝试用Qt4.6制作一个简单的GUI。我做了一个表示菜单栏的separete类:

    MenuBar::MenuBar()
    {
        aboutAct = new QAction(tr("&About QT"), this);
        aboutAct->setStatusTip(tr("Show the application's About box"));
        connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));
    
        quitAct = new QAction(tr("&Quit"),this);
        quitAct->setStatusTip(tr("Exit to the program"));
        //connect(quitAct, SIGNAL(triggered()), &QApp, SLOT(quit()));
    
        menuFile = new QMenu("File");
        menuFile->addAction(quitAct);
    
        menuLinks = new QMenu("Links");
    
        menuAbout = new QMenu("Info");
        menuAbout->addAction(aboutAct);
    
    
        addMenu(menuFile);
        addMenu(menuLinks);
        addMenu(menuAbout);
    }
    

    我无法将Quitact的信号连接到主应用程序的Quit插槽,可能是因为它在menubar类中不可见。

    //connect(quitAct, SIGNAL(triggered()), &QApp, SLOT(quit()));
    

    我该怎么做?

    3 回复  |  直到 15 年前
        1
  •  3
  •   Robin    15 年前

    你打字错误。:)

    在: connect(quitAct, SIGNAL(triggered()), &QApp, SLOT(quit()));

    变量的名称是qapp,而不是qapp。撇开这一点不谈,巴尔法说了这一切。所以要么是:

    connect(quitAct, SIGNAL(triggered()), qApp, SLOT(quit()));

    connect(quitAct, SIGNAL(triggered()), QApplication::instance(), SLOT(quit()));

        2
  •  5
  •   balpha    15 年前

    使用 static instance() method QApplication 类或 qApp macro 获取指向应用程序实例的指针。注意这是一个指针,所以通过 卡普 connect() 不是 &qApp .

        3
  •  0
  •   mosg    15 年前
    1. 可以在menubar类中将quitact变量设置为public,然后从主窗口类将menubar->quitact连接到quit()函数,如

      connect(菜单栏->退出,信号(clicked()),this,slot(quit());

    2. 您可以在menubar类(例如quit signal())中创建公共信号,并在该信号发出时从主窗口/对话框类将其连接到quit()函数。

    3. 不能在主窗口/对话框类之外使用menubar类代码fo,只需将其全部放入一个函数中,例如:

      void createMenuBar()。{ … }

    祝你好运。