簡體   English   中英

QAction無法連接到我的插槽

[英]QAction won't connect to my slot

我正在嘗試使用Qt制作IHM,然后從制作基本菜單(文件,編輯...)開始。 到目前為止,我的菜單包含“文件”,然后顯示“新建項目,打開項目,退出”。 看起來不錯,但是我的問題是我似乎無法觸發這些動作(單擊它們或通過快捷鍵)。

這是我的廣告位:

void KoriganEngine::launchNewProjectWidget(){
   //External QWidget
   m_nwProj = new NewProjectWidget(NULL,Qt::MSWindowsFixedSizeDialogHint);
   m_nwProj->show();
}

如果在連接了按鈕的情況下使用此插槽,則新的QWidget將正確顯示。 但是,不可能通過動作來做同樣的事情。

這是我的操作和菜單的代碼:

    void KoriganEngine::KG_createMenus(){
//init actions
KG_createMenuActions();

//add menu to the bar
m_fileMenu = menuBar()->addMenu("File");
m_fileMenu->addAction(m_newProjAction);
m_fileMenu->addAction(m_openProjAction);
m_fileMenu->addSeparator();
m_fileMenu->addAction(m_quitAction);

m_editMenu = menuBar()->addMenu("Edit");

}

    void KoriganEngine::KG_createMenuActions(){
m_newProjAction = new QAction("New Project...", this);
m_newProjAction->setShortcuts(QKeySequence::New);
m_newProjAction->setStatusTip(QString("Create a new Project"));
connect(m_newProjAction, SIGNAL(trigerred()), this, SLOT(slottest()));

m_openProjAction = new QAction("Open Project...", this);
m_openProjAction->setShortcuts(QKeySequence::Open);
m_openProjAction->activate( QAction::Hover);
connect(m_openProjAction, SIGNAL(trigerred()), this, SLOT(launchNewProjectWidget())); //TODO replace the slots

m_quitAction = new QAction("Exit", this);
connect(m_quitAction, SIGNAL(trigerred()), this, SLOT(quit()));

}

和使用按鈕的代碼:

connect(m_button, SIGNAL(clicked()), this, SLOT(launchNewProjectWidget()));

所以我真的不明白為什么它不應該做出同樣的反應,我已經一遍又一遍地閱讀了Qt的例子……我一定錯過了一些東西,但是如果有人作為一個主意,我將不勝感激,因為它開始讓我討厭生活:p

謝謝你們。

PS:好的,不確定我是否能很好地處理代碼塊業務,在我的辯護中,使用它真的很奇怪...:p

您在觸發詞:P中犯了一個錯誤,應該是:

connect(m_quitAction, SIGNAL(triggered()), this, SLOT(quit()));
                                ------

觸發,不觸發! :)

如果我正確,你的問題是m_openProjAction-> activate(QAction :: Hover); 這導致QAction發出hovered()而不是Triggered();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM