2017-04-08 80 views
0

我正在爲Qt gui應用程序編寫一個插件。我只知道頂層窗口QWidget指針,並且我對窗口的佈局沒有特別的瞭解。「劫持」Qt gui給了root QWidget *

是否有一種簡單的方法可以將窗口小部件添加到此窗口中,例如佔據窗口的底部,如工具欄?

也許將所有的窗口內容移動到一個新的QWidget(a)中,並創建另一個帶vbox佈局的QWidget(b)來包含(a)和我的新工具欄QWidget。聽起來不太容易...也許有一個更簡單的解決方案?

編輯:有沒有像Spy++這樣的工具可以在運行時顯示Qt小部件佈局?

+0

是要由小工具來修改/更新*總是*頂層窗口小部件? –

+0

@ G.M。它是應用程序的主窗口。應用程序可以返回它的QWidget *。關於Spy ++的 – fferri

+0

:參見[GammaRay](https://www.kdab.com/development-resources/qt-tools/gammaray/) – CapelliC

回答

0

如果你能得到QWidget*你有權訪問它的.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); 
} 

免責聲明:這是未經測試