我有一個QDialog
我正在使用。它有點像QMessageBox
。我注意到QMessageBox
(及其標籤大小)的大小取決於所顯示消息的大小。如何根據其子項的文本長度自動調整QDialog的大小?
如何讓我的QDialog
的尺寸自動調整爲QMessageBox
?目前我的QDialog
包含一個按鈕框和一個標籤,QDialog
是垂直佈局。
(我知道我可以只直接使用消息框,但最終我將有更多的複雜的對話。)
我有一個QDialog
我正在使用。它有點像QMessageBox
。我注意到QMessageBox
(及其標籤大小)的大小取決於所顯示消息的大小。如何根據其子項的文本長度自動調整QDialog的大小?
如何讓我的QDialog
的尺寸自動調整爲QMessageBox
?目前我的QDialog
包含一個按鈕框和一個標籤,QDialog
是垂直佈局。
(我知道我可以只直接使用消息框,但最終我將有更多的複雜的對話。)
自動解決方案:
使用佈局並將尺寸策略設置爲QSizePolicy::Expanding
。在QtDesigner中,一旦你所有的孩子都放在你的QDialog上,然後點擊調整大小按鈕下一個佈局的按鈕。您的QDialog將在運行時自動調整大小。
手動解決方案:
的QWidget
類有一個方法adjustSize
是調整QWidget的,以適應其內容。只要所有的孩子都放好了就打電話給他。
設置你的對話框被擴大,和非常小的。然後,請務必在顯示對話框之前設置您的信息。顯示時,它會根據它包含的對象的大小嚐試找到合適的大小。 (這種情況遞歸,所以如果對話框沒有你顯示你的消息,使標籤與對話之間確保一切都被設置爲使用佈局標籤的直接父。)
手動解決方案並不在我的情況下工作:我有一個QTableWidget的,並與2個按鈕QHBoxLayout,負責一個QVBoxLayout一個QDialog的,我已經設置了政策對話上擴大,並呼籲adjustSize不會完全沒有(看到) – Lars 2013-11-20 10:29:16
在調用adjustSize()之前調用QApplication :: processEvents()是非常重要的,如下所示:http://daniel-albuschat.blogspot.de/2009/08/shrinking-qt-widgets-to-minimum-needed.html – Cerno 2017-11-29 17:18:13