2014-01-24 58 views
1

我正在尋找一個超級簡單的例子,似乎無法找到一個。我有一個MainWindow。當按鈕被按下時,我想創建一個新窗口,在MainWindow的佈局中打開,成爲主窗口的一部分。如何將小部件添加到預先存在的QLayout?

我有一個設置時按下一個按鈕來調用這個槽......當它被調用的代碼我QLabel顯示了,但我的QWidget的不

QWidget *test = new QWidget(); 
test->setGeometry(QRect(100,100,100,100)); 
layout->addWidget(test,0,0) 

//Operation Mode 
QLabel *operationalModeLabel1 = new QLabel("TEST"); 
layout->addWidget(operationalModeLabel1,2,1); 

回答

1

的理由「缺乏例子「是,你認爲它是錯的。您所描述的內容始終是由每個使用佈局的Qt示例完成的!我是認真的。當您將小部件添加到佈局時,它並不重要。 「現在」添加小工具與「稍後」添加小工具沒什麼不可思議的。

想想這個問題的標題:它使沒有意義。所有小部件必須添加到已存在的佈局中! 按照定義,不能少於。如果沒有佈局,你怎麼可以添加一個小部件?

你的代碼是錯的,就是這樣。在由佈局管理的小部件上設置幾何圖形始終毫無意義。只要將它添加到佈局中,佈局就會更改幾何。

由於您在佈局中添加了一個空的小部件,因此很可能無法看到它。這就是標籤出現的原因 - 它不是一個空的部件。

如果您想要一個具有固定大小的小部件,爲了更容易注意到,只需在其上設置固定大小即可。更好的是,使它變紅,以便它脫穎而出。

QWidget * test = new QWidget(); 
test->setStyleSheet("QWidget { background-color: red }"); 
test->setFixedSize(100, 100); 
layout->addWidget(test, 0, 0);