2017-04-08 7 views
0

Qt guiアプリケーション用のプラグインを作成しています。私はトップレベルのウィンドウQWidgetポインタしか知りません。ウィンドウのレイアウトに関する特別な知識はありません。"ハイジャック" Qt gui root QWidgetを指定*

ツールバーのように、ウィンドウの下側を占有するために、このウィンドウにウィジェットを追加する簡単な方法はありますか?

おそらくすべてのウィンドウコンテンツを新しいQWidget(a)に移動し、(a)と新しいツールバーQWidgetを含むvboxレイアウトで別のQWidget(b)を作成します。あまりにも簡単には聞こえません...おそらくもっと簡単な解決策がありますか?

EDIT:Spy++のようなツールがあり、実行時にQtウィジェットのレイアウトを表示できますか?

+0

でトップレベルのウィジェット*必ず*あなたは/更新を変更したいウィジェットですか? –

+0

@ G.M。それはアプリケーションのメインウィンドウです。アプリケーションは、そのQWidget *を返すことができます。 Spy ++についての – fferri

+0

:[GammaRay](https://www.kdab.com/development-resources/qt-tools/gammaray/)を参照してください。 – CapelliC

答えて

0

にアクセスできる場合は、.layout()にアクセスしてください。QVBoxLayoutの上部にレイアウトを追加し、下部にウィジェットを追加できます。

のような何か:

void addWidget() { 
    QWidget* mainwindow = getMainWindow(); 
    auto* newLayout = new QVBoxLayout(mainwindow); 
    auto* oldLayout = mainwindow.layout(); 
    auto* toolbar = getToolbar(mainwindow); 

    mainwindow.setLayout(newLayout); 

    int stretchMainWindow=1; 
    int stretchToolbar=0; 
    newLayout->addLayout(oldLayout, stretchMainWindow); 
    newLayout->addWidget(toolbar, stretchToolbar); 
} 

免責事項:これはテストされていない

関連する問題