【问题标题】:How do I auto-adjust the size of a QDialog depending on the text length of one of its children?如何根据其中一个子项的文本长度自动调整 QDialog 的大小?
【发布时间】:2010-12-13 03:04:13
【问题描述】:

我正在使用QDialog。它有点像QMessageBox。我注意到QMessageBox 的大小(及其标签的大小)取决于所显示消息的大小。

如何让QDialog 的大小像QMessageBox 一样自动调整?目前我的QDialog 包含一个按钮框和一个标签,QDialog 是垂直布局。

(我知道我可以直接使用消息框,但最终我会有更复杂的对话框。)

【问题讨论】:

    标签: qt nokia qdialog


    【解决方案1】:

    将您的对话框设置为扩展且非常小。然后,请务必在显示对话框之前设置您的消息。显示时,它将尝试根据其包含的对象的大小找到其合适的大小。 (这会递归发生,因此如果对话框不是您显示消息的标签的直接父级,请确保标签和对话框之间的所有内容都设置为使用布局。)

    【讨论】:

      【解决方案2】:

      自动解决方案:

      使用布局并将大小策略设置为QSizePolicy::Expanding。在 QtDesigner 中,一旦您的所有孩子都放在 QDialog 上,然后单击 Adjust Size 按钮下一个布局。您的 QDialog 将在运行时自动调整大小。

      手动解决方案:

      QWidget 类有一个方法adjustSize 可以调整 QWidget 的大小以适应其内容。设置所有子节点后调用它。

      【讨论】:

      • 手动解决方案在我的情况下不起作用:我有一个带有 QVBoxLayout 和 QTableWidget 的 QDialog 和带有 2 个按钮的 QHBoxLayout,我已将策略设置为展开并在对话框上调用 adjustSize 确实什么都没有(可见)
      • 在调用 adjustSize() 之前调用 QApplication::processEvents() 很重要,如下所述:daniel-albuschat.blogspot.de/2009/08/…
      • 也使用 QSpacers
      【解决方案3】:

      提示:如果您在对话框隐藏时尝试使用“adjustSize()”函数,它可能不会正常工作。最好在“show()”函数之后使用。

      【讨论】:

      • 欢迎来到 Stack Overflow。在回答已接受答案的旧问题(寻找绿色✓)以及其他答案之前,请确保您的答案添加了新内容或对它们有帮助。这是How to Answer 的指南。
      猜你喜欢
      • 2020-01-26
      • 2011-05-07
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 2011-11-13
      • 2011-01-26
      • 2014-05-04
      相关资源
      最近更新 更多