2009-11-04 99 views
5

我有一個QDialog我正在使用。它有點像QMessageBox。我注意到QMessageBox(及其標籤大小)的大小取決於所顯示消息的大小。如何根據其子項的文本長度自動調整QDialog的大小?

如何讓我的QDialog的尺寸自動調整爲QMessageBox?目前我的QDialog包含一個按鈕框和一個標籤,QDialog是垂直佈局。

(我知道我可以只直接使用消息框,但最終我將有更多的複雜的對話。)

回答

13

自動解決方案:

使用佈局並將尺寸策略設置爲QSizePolicy::Expanding。在QtDesigner中,一旦你所有的孩子都放在你的QDialog上,然後點擊調整大小按鈕下一個佈局的按鈕。您的QDialog將在運行時自動調整大小。

手動解決方案:

QWidget類有一個方法adjustSize是調整QWidget的,以適應其內容。只要所有的孩子都放好了就打電話給他。

+1

手動解決方案並不在我的情況下工作:我有一個QTableWidget的,並與2個按鈕QHBoxLayout,負責一個QVBoxLayout一個QDialog的,我已經設置了政策對話上擴大,並呼籲adjustSize不會完全沒有(看到) – Lars 2013-11-20 10:29:16

+0

在調用adjustSize()之前調用QApplication :: processEvents()是非常重要的,如下所示:http://daniel-albuschat.blogspot.de/2009/08/shrinking-qt-widgets-to-minimum-needed.html – Cerno 2017-11-29 17:18:13

1

設置你的對話框被擴大,和非常小的。然後,請務必在顯示對話框之前設置您的信息。顯示時,它會根據它包含的對象的大小嚐試找到合適的大小。 (這種情況遞歸,所以如果對話框沒有你顯示你的消息,使標籤與對話之間確保一切都被設置爲使用佈局標籤的直接父。)

相關問題