首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QAction不调用连接的时隙

QAction不调用连接的时隙
EN

Stack Overflow用户
提问于 2020-07-29 05:34:01
回答 1查看 128关注 0票数 1

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

代码语言:javascript
复制
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
};

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

代码语言:javascript
复制
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()插槽。

这里有我遗漏的东西吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-29 06:25:27

您使用QActionShortcutConnect的代码看起来很好,因此我怀疑在系统中使用lambda (如

代码语言:javascript
复制
connect(newAct, &QAction::triggered, []()
{
    qDebug()<< "Hello Action";
});

在单击和使用快捷方式HelloAction时,可以看到ctrl+N。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63146908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档