2016-01-29 145 views

回答

0

我想插入一個容器內QWidget的一個QWidget(通過其 佈局),但要避免養育小部件插入到容器 部件。

有這背後充分的理由,插入控件綁定到一個文檔中的工具箱 ,當文檔成爲活動文檔此工具箱被髮送到一個浮動船塢部件 。

這可能嗎?

這個簡單的答案是否定的 - 無法避免小部件成爲父對象。但堅持下去。首先,爲什麼答案是否定的。那我們怎麼才能繼續做你想做的。

爲小部件設置佈局會執行一個隱式父組。 爲佈局設置小部件會執行一個隱式父組。

QVBoxLayout* layout = new QVBoxLayout; // no parent yet 
this->setLayout(layout);    // it does layout->setParent(this); 
QWidget* widget = new MyWidget;  // no parent yet 
layout->addWidget(widget);   // it does widget->setParent(this); 

如果佈局在不同的插件的佈局管理器,setLayout的() 將重新設置父級的佈局,使它的佈局管理器這個 部件。

無效QLayout ::的addItem(QLayoutItem *項目)

中的子類實現增加一個項目:

隨着QLayout因爲addWidget並調用的addItem的重排根是更復雜一點。它是如何添加到每個子類的特定 。

此功能通常不會在應用程序代碼中調用。要將 小部件添加到佈局,請使用addWidget()函數;要添加子版面 佈局,請使用由相關QLayout 子類提供的addLayout()函數。

注意:項目的所有權轉移到佈局,並且佈局的責任是將其刪除。 QGridLayout :: addLayout()和 QGridLayout :: addLayout()。另請參閱addWidget(),QBoxLayout :: addLayout()和 QGridLayout :: addLayout()。

空隙QLayout :: addWidget(QWidget的* W)

添加插件w至該佈局中的特定的佈局方式。這個 函數使用addItem()。

但是,我們還是可以做一些這樣的請求:

有這背後的理由,插入控件綁定到一個文檔中的工具箱 ,這個工具箱被髮送到一個浮動船塢小部件 當文檔成爲活動文檔時。

這可能嗎?

但這當然是可能的。比方說,調用QWidget::setParent這是很常見的做法,當我們需要將父級移到新的佈局時。

相關問題