2009-11-18 89 views
2

中,如何通過代碼將窗口小部件(比如QLabel)添加到FormWindow中? 由於像createWidget()等方法都是抽象的,我如何正確使用內部機制將QLabel添加到活動的FormWindow中?如何在qdesigner_workbench.cpp中將窗口小部件添加到QtDesigner中的窗體

編輯:

在qdesigner_workbench.cpp,這是目前我有:

QDesignerFormWindowManagerInterface* fwm = core()->formWindowManager(); 
QDesignerFormWindowInterface* fw = fwm->activeFormWindow(); 

QWidget* mw = fw->mainContainer(); 

QLabel* label = new QLabel(mw);   //can be added correctly but not in the right hierarchy 
label->setText("I am a good girl."); 

兆瓦(從FW-> mainContainer上()獲得)實際上是一個主窗口,然而真實數據我需要的是:

mw -> children[2] (which is a QDesignerWidget) -> children 

有9個小部件在設計器中,你可以看到有9個數組在上面提到的兒童;看到這個鏈接(一個圖片)的插圖。

http://img24.imagevenue.com/img.php?image=98871_a_122_476lo.jpg

所以...我該如何正確添加QLabel部件? 同時嘗試

QLabel* label = new QLabel(fw); // will be a sibling of MainContainer, which is the QMainWindow (mw) in this case 
QLabel* label = new QLabel(mw); // will be a sibling of QDesignerWidget 

和顯然任一作品。

回答

0

創建窗口小部件,並把它添加到你的主窗口,因爲它是你的核心部件

mainWindow->setCentralWidget(centralWidget);

,如果你想添加一個標籤,你可以將它添加到這個中央物件

+0

哇,這很快。明天將在工作中檢查:) – purga

1

你應該將add任何QWidget添加到窗體的QLayout中。這將在調整窗體大小時將其放入窗體的顯示策略中。

form->ui->layout->add(yourQWidget); 

根據您所使用的QLayout的,附加功能的參數不會是相同的。

4

如果你只想顯示窗體上的一個小部件,你可以設置你的QMainWindow或QDialog的是小部件父:

QLabel *l = new QLabel(this); 
l->setText("My long string"); 

是一個指針指向當前的QDialog的或QMainWindow的。

否則,正如ufukgun指出的那樣,如果您需要您的小部件佔用QMainWindow的中心,則可以使用setCentralWidget。

相關問題