なぜかUIウィンドウから以下のコードがあり、QToolBarから継承したMyActionDock、問題なく表示され、ボタンをクリックするとボタンの色も変わってしまいますが、スロット(a1ActionSlot()、シグナルに接続された a2ActionSlot()) が呼び出されることはなく、アクションがトリガーされないように感じます。Qt 4.7.2 を使用しています。どうしたの?どうもありがとう。
コードは Qt4.6 以前で正常に動作していたと思います。いつ問題が発生するかわかりません。
MyActionDock::MyActionDock (QWidget *parent) :
QToolBar (parent)
{
setOrientation (Qt::Vertical);
setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
setFixedWidth(canvas()->toolsDockWidth());
// ACTIONS
QToolButton * a1btn= new QToolButton (this);
a1btn->setText("Action 1");
a1btn->setIcon(QIcon("a1.png"));
a1btn->setToolTip ("Some action a1");
a1btn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
QAction *a1Action = addWidget(a1btn);
connect (a1Action , SIGNAL (triggered()), this, SLOT(a1ActionSlot()));
addAction (a1Action);
QToolButton * a2Btn = new QToolButton (this);
a2Btn ->setText("A2");
a2Btn ->setIcon(QIcon("a2.png"));
a2Btn ->setToolTip ("something");
QAction *a2Action= addWidget(a2Btn );
connect (a2Action, SIGNAL (triggered()), this, SLOT(a2ActionSlot()));
addAction (a2Action);
}
void MyActionDock::a1ActionSlot()
{
//do something
}
void MyActionDock::a2ActionSlot()
{
//do something
}