私の問題は、QMenuBar の項目をクリックすると、対応するスロットが 2 回呼び出されることです。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 ファイルで) コンパイルすると、"Click here" をクリックすると "Triggered" が 1 回、"Or here" が 2 回出力されることがわかります。理由がわかりません。
私は何を間違っていますか?