我有處理QMainWindow的「核心」對象。
Core.h代碼Qt主窗口菜單信號
class Core : public QObject
{
Q_OBJECT
public:
explicit Core(QObject *parent = 0);
~Core();
void appInit();
int getAuth();
public slots:
void appExit();
private slots:
void appMenuTriggered(QAction *action);
private:
void preInit();
MainWindow *mwnd;
};
Core.cpp代碼
Core::Core(QObject *parent) : QObject(parent)
{
qDebug() << "Core::Constructor called";
preInit();
}
Core::~Core()
{
delete mwnd;
qDebug() << "Core::Destructor called";
}
int Core::getAuth()
{
LoginDialog *login = new LoginDialog();
int r = login->exec();
delete login;
return r;
}
void Core::appExit() // connected to qapplication aboutToQuit
{
qDebug() << "Core::appExit called";
}
void Core::preInit() // called after getAuth im main.cpp
{
qDebug() << "Core::preInit called";
}
void Core::appMenuTriggered(QAction *action)
{
qDebug() << "action triggered";
}
void Core::appInit()
{
mwnd = new MainWindow();
mwnd->show();
qDebug() << "Core::appInit called";
}
我想主窗口菜單欄中的信號連接到這樣的核心插槽:
connect(mwnd->menuBar(), SIGNAL(triggered()), this, SLOT(appMenuTriggered()));
但它不」工作。我新的C + +和Qt。如何連接這個? 或者,也許有更好的方法來處理其他程序部分的主窗口動作。
UPD 問題解決了。忘記包括QMenuBar
如果你已經解決了你的問題,你應該發佈它作爲答案並接受它。這樣,如果提到診斷錯誤消息,它將使其他人更受益於 – musefan