我想在容器QWidget(通過它的佈局)中插入一個QWidget,但避免將插入的小部件父母化到容器小部件。Qt窗口小部件,是否必須將包含窗口小部件設置爲父窗口?
背後有充分的理由,插入的小部件是一個綁定到文檔的工具箱,當文檔成爲活動文檔時,此工具箱被髮送到浮動小部件。
這可能嗎?
我想在容器QWidget(通過它的佈局)中插入一個QWidget,但避免將插入的小部件父母化到容器小部件。Qt窗口小部件,是否必須將包含窗口小部件設置爲父窗口?
背後有充分的理由,插入的小部件是一個綁定到文檔的工具箱,當文檔成爲活動文檔時,此工具箱被髮送到浮動小部件。
這可能嗎?
我想插入一個容器內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這是很常見的做法,當我們需要將父級移到新的佈局時。