Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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++ QAction赢得';我无法连接到我的插槽_C++_Qt_Signals Slots_Qmenu - Fatal编程技术网

C++ QAction赢得';我无法连接到我的插槽

C++ QAction赢得';我无法连接到我的插槽,c++,qt,signals-slots,qmenu,C++,Qt,Signals Slots,Qmenu,我试图用Qt制作一个IHM,我从制作一个基本菜单(文件、编辑…)开始。 到目前为止,我的菜单包含“文件”,然后显示“新建项目、打开项目、退出”。 看起来不错,但我的问题是我似乎无法触发这些操作(单击它们或通过快捷键) 这是我的位置: void KoriganEngine::launchNewProjectWidget(){ //External QWidget m_nwProj = new NewProjectWidget(NULL,Qt::MSWindowsFixedSizeDia

我试图用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");
}

}

以及与按钮一起工作的代码:

connect(m_button, SIGNAL(clicked()), this, SLOT(launchNewProjectWidget()));
所以我真的不明白为什么它的反应不一样,我已经一遍又一遍地阅读了Qt示例。。。我一定错过了什么,但如果有人把我当作一个想法,我会非常感激,因为它开始让我讨厌生活:p

谢谢大家


PS:好的,我不确定我是否能处理好代码块业务,为我辩护,使用它真的很奇怪…:p

您在触发单词中犯了一个错误:p应该是:

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

已触发,未触发!:)

您在触发的word:p中犯了一个错误,应该是:

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

已触发,未触发!:)

如果我没弄错的话,你的问题是m_openProjAction->activate(QAction::Hover);这会导致QAction发出悬停()而不是触发()

如果我没弄错的话,你的问题是m_openProjAction->activate(QAction::Hover);这会导致QAction发出悬停()而不是触发()

你说得不对。这个函数只是发出信号,而不是设置它。我想到了这一点,但这不是问题所在。真正的是上面的解释。无论如何,谢谢是的,没有注意到输入错误,所以寻找一些真正的编码错误,你应该在附近的控制台上运行qt应用程序,这样当信号或插槽由于任何原因无法连接时,你都会看到警告你是不对的。这个函数只是发出信号,而不是设置它。我想到了这一点,但这不是问题所在。真正的是上面的解释。无论如何,谢谢是的,我没有注意到输入错误,所以寻找一些真正的编码错误,你应该在附近的控制台上运行qt应用程序,这样当信号或插槽由于任何原因无法连接时,你会看到警告谢谢你,我只是注意到,我很惭愧,我因为拼写问题浪费了几个小时。。。无论如何谢谢谢谢,我只是注意到,我很惭愧,因为拼写问题我已经浪费了几个小时。。。无论如何谢谢你