在Qt中,我想使用QWidget.addAction()
在窗口小部件中添加一些操作。
我可以使用QToolBar.addAction()
轻松完成,但是当我使用QWidget.addAction()
时,它无效。
如何使用QWidget.addAction()
?
这是我的功能:
void Reb::addActionToBar(QString *tabName, QAction *action)
{
//if tab exist, just add the action, else:
tab_widget->addTab(new QWidget(), *tabName);
for(int i = 0 ; i <= tab_widget->count() ; i++) {
if(tab_widget->tabText(i) == tabName) {
action.setParent(tab_widget->widget(i));
tab_widget->widget(i)->addAction(action);
}
}
}
如你所知,tab_widget是一个QTabWidget ...... 我没有错误,但我无法在标签中看到我的操作。
答案 0 :(得分:1)
QWidget::addAction()没有将操作添加到UI - 在给定正确的上下文菜单策略的情况下,窗口小部件操作的唯一显示位于窗口小部件的上下文菜单中。
QTabWidget无法在其UI中显示操作。操作通常显示在工具栏或菜单栏中,因此您需要在那里添加操作。
作为旁注,不需要通过指针传递QStrings,只需通过const引用传递QString:
void Reb::addActionToBar(const QString &tabName, QAction *action)
此外,您的代码有一个错误的错误,使用i < tab_widget->count()
代替i <= tab_widget->count()
来解决此问题。