我正在嘗試使用最新版本的Qt解決圖形問題。下面的圖片顯示了我迄今爲止獲得的成果,我將用它來解釋預期結果。以qt爲中心的正方形qWidget
我使用一個主垂直佈局和佈局中最大的窗口小部件內有一個橫向佈局只有一個孩子:正方形的小工具。預期的行爲當然是將方形小部件水平居中並佔用最大的可用空間。不需要使用相同的佈局配置,但接口的外觀應該相同。
上面已經通過設置minimumExpanding的QSizePolicy用於垂直和水平的正方形小部件,並通過迫使它是用下面的代碼方獲得的圖像:
void SquareWidget::resizeEvent(QResizeEvent *event) {
//This is an override to the QWidget method
QSize s = size();
if (s.height()<s.width()) {
resize(s.height(), s.height());
} else {
resize(s.width(), s.width());
}
return;
}
在試圖解決這個問題我瀏覽了本網站上的一些答案並找不到有關如何執行兩項任務的明確答案。
第一個問題:如何使小部件廣場,並保持其寬高比?
據說該方法heightForWidth()不Qt中的較新版本的工作,以及測試後,不爲我工作的。另一方面,resizeEvent的上述重寫會導致遞歸,因爲有調用resize()(並且據我瞭解佈局應該處理調整大小)。
問題二:如何中心廣場?
我嘗試使用佈局取向性(中心水平和垂直方向),但它們會導致插件尺寸爲不可變的。
也許我不理解的東西有關Qt如何處理小部件的位置。任何建議或澄清將不勝感激。
關於 「heightForWidth不起作用」,看看答案的日期:8年前。現在QWidget有它:https://doc.qt.io/qt-5/qwidget.html#hasHeightForWidth – peppe
@peppe感謝您的信息。如果我使用heightforwidth方法,不會導致集中問題嗎? – ProTom