Qaction 不调用连接的插槽



我有一个带有QMainWindow的Qt项目,它有以下操作和插槽:

class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = Q_NULLPTR);
private:
Ui::MainWindowClass ui;
//..... other code
QMenu* fileMenu;
QAction* newAct; //The concerned QAction*

public slots:
void newGame();//The concerned slot
//..... other code
};

我已经初始化并连接了主窗口构造函数中的QAction和插槽:

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {

//...... other code
newAct = new QAction(tr("&New Game"), this);
newAct->setShortcut(QKeySequence::New);
connect(newAct, &QAction::triggered, this, &MainWindow::newGame);

fileMenu = menuBar()->addMenu(tr("&File"));
fileMenu->addAction(newAct);
//..... other code
}

当我运行应用程序时,QAction newAct会显示在菜单栏中,但当它被单击时,什么也不会发生。当它在代码的另一部分被调用时,这个槽可以很好地工作,所以我知道这个槽工作得很好。出于某种原因,我怀疑被触发的QAction并没有调用NewGame((插槽。

这里有我遗漏的东西吗?

带有QActionShortcutConnect的代码看起来不错,所以我怀疑主窗口中的插槽newGame我确实试过用类似λ的来测试我的系统

connect(newAct, &QAction::triggered, []()
{
qDebug()<< "Hello Action";
});

当点击和使用快捷键ctrl+N 时,我可以看到HelloAction

最新更新