Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Qt4的简单菜单栏_C++_Qt_Qt4 - Fatal编程技术网

C++ 使用Qt4的简单菜单栏

C++ 使用Qt4的简单菜单栏,c++,qt,qt4,C++,Qt,Qt4,我正在尝试用Qt4.6制作一个简单的GUI。我制作了一个代表菜单栏的分离类: 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()));

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

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()));
我怎么做

  • 您可以在MenuBar类中将quitAct变量设置为public,然后从主窗口类连接MenuBar->quitAct到您的quit()函数,如

    连接(菜单栏->退出,信号(单击()),此,插槽(退出())

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

  • 您不能在主窗口/对话框类之外使用菜单栏类代码,只需将其全部放在一个函数中即可,例如:

    void createMenuBar(){ ... }

  • 祝您好运。

    使用
    QApplication
    类的或获取指向应用程序实例的指针。请注意,这是一个指针,因此将
    qApp
    传递到
    connect()
    ,而不是
    &qApp
    您有输入错误。)

    在:
    connect(quitAct,信号(triggered()),&QApp,插槽(quit())

    变量的名称是qApp,而不是qApp。除此之外,巴尔帕说的都是。因此,要么:

    connect(quitAct,信号(triggered()),qApp,SLOT(quit())

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

    所有方法都非常“脏”,而不是Qt风格。你没有发现他的代码中有错误