我的问题是,当我单击 QMenuBar 中的一个项目时,相应的插槽会被调用两次。我正在使用 Qt 4.8.1。我没有使用 Qt Designer,也没有使用“自动连接”功能。这是我的代码片段:
#include <iostream>
#include <QWidget>
#include <QMenuBar>
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = 0) : QWidget(parent)
{
QMenuBar *menu = new QMenuBar(this);
menu->addAction("Click here");
menu->addAction("Or here");
connect(menu, SIGNAL(triggered(QAction*)), this, SLOT(handleAction(QAction*)));
}
public slots:
void handleAction(QAction *action)
{
std::cout << "Triggered" << std::endl;
}
};
主要功能:
#include "main.h"
#include <QApplication>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
MyWidget w;
w.show();
return app.exec();
}
如果您编译它(使用 MOC 文件),您会看到单击“单击此处”将打印一次“触发”,并打印两次“或此处”。我不明白为什么。
我究竟做错了什么 ?