Qt Connect为QMenu触发SIGNAL

时间:2015-08-05 11:41:54

标签: qt qt5 qobject qmenu qaction

我有一个“最近的文件”文件菜单作为QMenu,如:文件 - >最近的文件。 在那里,我动态创建几个QActions与最近打开的文件列出。这样可行。

但是当我点击最近的文件QMenu时,我想触发一个单独的SLOT。

connect(ui->menuRecently_Open, SIGNAL(triggered(QAction*)), this, SLOT(onRecentOpenFiles(QAction*)));

并打印出TRIGGER调试信息

void MainWindow::onRecentOpenFiles(QAction* action)
{
  qDebug() << "TRIGGER";
}

但没有任何反应?

1 个答案:

答案 0 :(得分:3)

这可以按预期工作:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    setupUi(this);

    QMenu *fileMenu = menuBar()->addMenu(tr("File"));
    QMenu *recentMenu = fileMenu->addMenu(tr("Recent"));
    recentMenu->addAction(tr("File1"));
    recentMenu->addAction(tr("File2"));
    recentMenu->addAction(tr("File3"));

    connect(recentMenu, SIGNAL(triggered(QAction*))
            , SLOT(onRecentOpenFiles(QAction*)));
}

void MainWindow::onRecentOpenFiles(QAction *action)
{
    qDebug() << action;
}

你做错了什么,或者没有告诉我们一切。