[英]Simple menubar using Qt4
我正在嘗試使用QT 4.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的信號與主應用程序的退出插槽連接,可能是因為它在MenuBar類中不可見。
//connect(quitAct, SIGNAL(triggered()), &QApp, SLOT(quit()));
我該怎么做?
使用QApplication
類的靜態instance()
方法或qApp
宏獲取指向應用程序實例的指針。 請注意,這是一個指針,因此connect()
qApp
傳遞給connect()
,而不是&qApp
。
你有錯字 :)
在: 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()));
您可以在MenuBar類中將quitAct變量設置為公共變量,然后從主窗口類中將menuBar-> quitAct連接到您的quit()函數,例如
connect(menuBar-> quitAct,SIGNAL(clicked()),this,SLOT(quit()));
您可以在MenuBar類中創建公共SIGNAL,例如quitSignal(),並在發出該信號時從主窗口/對話框類將其連接到quit()函數。
您可能無法在主窗口/對話框類之外使用fo \\ rom的MenuBar類代碼,而只是將它們全部放在一個函數中,例如:
void createMenuBar(){...}
祝好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.