2

在 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 ...我没有错误,但我在选项卡中看不到我的操作。

4

1 回答 1

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()修复它。

于 2013-03-16T18:56:30.207 回答