Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确调整Qt小部件的大小?_Qt_Qwidget_Qlayout_Qsizepolicy - Fatal编程技术网

如何正确调整Qt小部件的大小?

如何正确调整Qt小部件的大小?,qt,qwidget,qlayout,qsizepolicy,Qt,Qwidget,Qlayout,Qsizepolicy,主要问题 什么是“正确”的方法来为小部件提供默认大小,并确保它们收缩、扩展,或者在有额外空间或没有足够空间容纳它们时保持固定 我认为Qt是如何工作的 在阅读Qt文档之后,大小调整算法似乎是这样的……布局首先通过QWidget::sizeHint方法询问其子级的理想大小。如果布局有额外的空间或空间不足,那么它将根据每个小部件的大小调整策略(QWidget::sizePolicy)、最小大小(QWidget::minimumSize)和最大大小(QWidget::maximumSize)确定要调整哪

主要问题

什么是“正确”的方法来为小部件提供默认大小,并确保它们收缩、扩展,或者在有额外空间或没有足够空间容纳它们时保持固定

我认为Qt是如何工作的

在阅读Qt文档之后,大小调整算法似乎是这样的……布局首先通过QWidget::sizeHint方法询问其子级的理想大小。如果布局有额外的空间或空间不足,那么它将根据每个小部件的大小调整策略(QWidget::sizePolicy)、最小大小(QWidget::minimumSize)和最大大小(QWidget::maximumSize)确定要调整哪些小部件的大小


为什么没有QWidget::setSizeHint方法?

如果我的理解接近准确,那么您所要做的似乎就是在每个小部件上设置sizeHint、sizePolicy、maximumSize和minimumSize,一切都会正常工作。那么为什么没有一个setSizeHint方法呢?!?!??!!当然,每次你使用一个小部件来提供你所需要的所有功能(QTableView,QComboBox,等等),你都可以扩展它并覆盖一个方法,但这听起来绝对荒谬

我正在解决的尺寸问题之一。

我有一个QMainWindow,左侧有一个QDockWidget。QDockWidget有一个QTableView。我希望QDockWidget/QTableView在启动时能占用“合理”的空间,然后用户可以调整它的大小,无论大小


不幸的是,当应用程序启动时,QDockWidget/QTableView的空间非常小,需要一个水平滚动条。我发现,强制它提供合理宽度的唯一方法是设置QDockWidget的最小宽度,但它会阻止用户将其大小调整为他们想要的大小。

为什么没有QWidget::setSizeHint方法?

在我看来,一个小部件根据其内容(或规则)计算其首选大小,而不是允许编码者设置一个可能是硬编码的或至少容易出错的大小点,这是更好的

我几乎从不需要在小部件上设置大小,玩它就足够了。当我需要一些特定的约束条件时,使用最小/最大尺寸就足够了。因此,Qt布局始终能够适应小部件

如果您想在尺寸等方面设置一些百分比,可以使用参数。还可以在需要空白时添加

扩展QWidget以覆盖该方法对我来说并不荒谬,因为您可以通过改变其首选大小来改变小部件的行为,这符合多态性的精神

如何正确调整Qt小部件的大小?是一个模糊的问题,取决于用例。大多数情况下,选择好的布局和大小策略可以让您实现非常适合的GUI。Qt Designer可以帮助您正确地完成这项工作,即使布局管理并不总是直观的(您需要先放置小部件,然后在从内部到外部的布局中设置它们)


关于您的具体问题,如果不知道窗口中两个小部件周围的布局细节,很难解释为什么QDockWidget变得太小。也许这是QDockWidget的一个特定问题:请参阅相关问题:


你问了很多问题(而且有点咆哮)。你在这里的实际问题是什么?如果有额外的或没有足够的空间容纳小部件,什么是“正确”的方法来为小部件提供默认大小,并确保它们收缩、扩展或保持固定。。。特别是在我的情况下,默认大小介于最小值和最大值之间,或者根本不需要最小/最大值。考虑在你的文章中删去一些多余的材料,并把重点放在问题本身上。你使用的是什么版本的QT?我使用QT 4.8(在不远的将来会升级)。我重新格式化/编辑了我的帖子,希望它更具吸引力。