2010-04-28 70 views
0

我试图做一个简单的GUI与QT 4.6。我做了表示菜单栏,一个separete类:简单的菜单栏使用Qt4

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的信号连接,因为它是不是从MenuBar类可见..

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

我该怎么办?

回答

3

你有一个错字。 :)

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

变量的名字是qApp,不QApp。除此之外,balpha说了这一切。所以,它要么:

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

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

0
  1. 你可以让你的quitAct变量作为公众MenuBar类,然后从主窗口类连接menuBar-> quitAct你退出()函数,如

    连接(menuBar-> quitAct, SIGNAL(clicked()),this,SLOT(quit()));

  2. 您可以在MenuBar类中创建公共SIGNAL,例如quitSignal(),并且在主窗口/对话框类中,当此信号发出时将其连接到quit()函数。

  3. 不得使用MenuBar类代码FO \ ROM主窗口/对话框类之外,只是把它们都放在一个功能,例如:

    无效createMenuBar(){ ... }

祝你好运。

+0

所有的方法都这么 “脏”,而不是Qt的风格。而且你没有在他的代码中发现错误 – 2010-04-30 10:19:48