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にアクションを表示する手段がありません。アクションは通常、ツールバーまたはメニューバーに表示されるため、そこにアクションを追加する必要があります。

補足として、ポインタでQStringを渡す必要はなく、const参照でQStringを渡すだけです。

 void Reb::addActionToBar(const QString &tabName, QAction *action)

また、コードに1つずつエラーがあり、それを修正するi < tab_widget->count()代わりにを使用してください。i <= tab_widget->count()

于 2013-03-16T18:56:30.207 に答える