您可以天真地编写一个小函数,每当您禁用 a 时调用该函数,QAction
以查看它是否是当前的默认操作,如下所示:
void MyDialog::on_button_clicked()
{
action2->setEnabled( false );
checkForDefault(action2);
}
void MyDialog::checkForDefault(QAction *action)
{
if ( tButton->defaultAction() == action ) {
QList<QAction*> list = tButton->menu()->actions();
int index = list.indexOf(action);
QAction *newDefault = list.at( ( index+1 ) % list.count() );
tButton->setDefaultAction(newDefault);
tButton->setEnabled(true);
}
}
这将检查更改的操作是否是按钮的当前默认操作,如果是,则选择其中的下一个QAction
作为QMenu
新的默认操作(如果禁用的操作是列表中的最后一个操作,则选择第一个操作)。
另一种方法可能是让您自己的类继承QToolButton
并重载其actionEvent ( QActionEvent * event )
方法以执行您需要的操作。
这有什么帮助吗?