1

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

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

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

并且应该打印出 TRIGGER 调试消息

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

但什么也没发生?

4

1 回答 1

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;
}

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

于 2015-08-06T09:39:32.680 回答