如何使用QWidget.addAction()添加动作?

时间:2013-03-16 08:24:02

标签: qt

在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 ...... 我没有错误,但我无法在标签中看到我的操作。

1 个答案:

答案 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()来解决此问题。