在previous question,他們給我的代碼,顯示heightForWidth()
(感謝,@Kuba奧伯),工程的實施,但都僅在頂級QWidget
一樣。我試圖重現它爲QMainWindow
,但它沒有奏效。了QWidget :: heightForWidth()和QMainWindow的
這是代碼,其中heightForWidth()
作品的頂級QWidget
:
QWidget w;
QVBoxLayout * l = new QVBoxLayout(&w);
l->addWidget(new Widget);
w.show();
而這正是我試圖實施的QMainWindow相同,但在這裏它heightForWidth()
沒有效果(即使它會稱爲):
QMainWindow mainWnd;
QWidget *w = new QWidget;
QVBoxLayout * l = new QVBoxLayout(w);
l->addWidget(new Widget);
mainWnd.setCentralWidget(w);
// Second widget to take unused space.
QFrame * btm = new QFrame;
btm->setFrameShape(QFrame::Panel);
btm->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
l->addWidget(btm);
mainWnd.show();
那麼爲什麼QMainWindow
實施工作?
1.當您添加一箇中央控件時,設置其父控件是多餘的。文檔說:* QMainWindow獲取窗口小部件指針的所有權,並在適當的時候刪除它。* –
2.如果一個'QObject'在任何時候都有它的父集*,無論是在創建時還是在以後,都必須在免費店鋪。這可能只是示例代碼中的一個錯字,但我想強調一下。 –
我認爲問題的一部分是''''widthForWidth()'是爲了交換機制,在這裏你交換一個。當width()增長時,高度不能增加。如果它恰好適用於簡單的佈局,那麼更多的勝利,但我認爲它並不是真正用於這種方式。 Qt本身*總是*使用它,因此當你增加寬度時,高度永遠不會增加。它要麼保持不變或減少。想想菜單欄或其他包裝文本。 –