问题标签 [qsizepolicy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6390 浏览

qt - 在运行时调整 QDialog 的大小

我有一个 QDialog 子类,其中包含我的应用程序的一些选项。一些选项是核心的,另一些是高级的,所以我决定将它们放入单独的可检查 QGroupBox 中。 在此处输入图像描述
当用户检查高级选项框时,我希望我的对话框垂直缩小,但我找不到正确执行此操作的方法 - 对话框大小保持完全相同, 在此处输入图像描述
我将对话框的大小策略设置为Expanding,尝试调用adjustSize()并尝试调用resize()方法 - 没有任何帮助。我无法以编程方式将对话框调整为小于当前大小(它只能变大)。同时,可以手动调整它的大小。 在此处输入图像描述
有谁能够帮我?

0 投票
2 回答
378 浏览

qt - 在 qt 中设置 sizepolicy

我的应用程序的中央小部件中有一个小部件和一个图形视图。该小部件中有四个按钮。我使用以下代码在水平布局中添加了两者:

我已将小部件的大小策略设置为最小,将图形视图的大小策略设置为首选。当我运行应用程序时,小部件会适当地显示在左上角,但图形视图的左上角位于中央小部件的中间,这不是必需的。它应该就在小部件旁边。

如何修改尺寸策略以正确放置主窗口中的图形视图?

0 投票
1 回答
1543 浏览

qt - Qt Resize of QListView

I would like to adjust a QListView's width according to its content to let every item visible. The list is like:

I tried different QSizePolicy and got really confused.

0 投票
3 回答
6771 浏览

c++ - 调整 QListView 的高度以适合内容

QListView我希望基于 an的高度QAbstractListModel适合内容,如果项目的数量小于给定的数字 N。如果项目超过 N,它应该只显示 N 项目。我在网上阅读了很多奇怪的提示,但其中大多数看起来像黑客。我想这与此有关,sizeHint()但在模型视图方法中没有 ItemWidget 可以覆盖sizeHint(). 实现这种行为的正确方法是什么?

此外,这与父应用程序的大小策略有何关联?这是第二个约束:内容不应尝试使用它们在父小部件中的空间,但父小部件应调整大小以适应QListView.

这不是这个问题的重复,因为我不能使用QCompleter.

0 投票
0 回答
1085 浏览

c++ - 自动 - 隐藏 QAction 按钮后调整 QToolBar 中图标的大小

在我的 GUI 程序中,我的主窗口底部有一个 QToolBar,其中包含许多用于打开各种对话框的 QAction 按钮。

现在,我通过QTCreator界面大小策略调整了QToolBar图标的大小(即宽度)。图标的大小是手动设置的,它们占据了 QToolBar 的整个宽度。

在此处输入图像描述

现在,由于我的程序所需的一些功能,我需要禁用/隐藏一个 QAction 按钮(即图标)。但是当我隐藏它时;

其余的 QAction 图标相应地移动,并在工具栏中留下一个空白区域(与隐藏图标的宽度相同)。

我可以通过编码调整 QToolBar 图标的大小(即宽度),即使其中一个或一些被隐藏,它们也可以占据整个空间?我在 QTCreator GUI 中找不到这样的选项 - 图标大小选项。

从文档来看,它似乎可以解决,iconSize但我不知道如何在代码中使用它。

0 投票
1 回答
2572 浏览

qt - 带有文本的 QToolButton:将最小高度覆盖为最小常规按钮高度

我在工具栏外显示带有图标加文本(Qt::ToolButtonTextBesideIcon )的QToolButton 。每个按钮都有一个与之关联的 QAction,它决定了使用的图标和显示的文本。所有这些按钮都放置在QGridLayout中。到目前为止,一切都很好。

不幸的是,一旦您将 QAction 添加到 QToolButton,Qt 就会自动决定将其缩小到最小尺寸,这不是我想要的 QGridLayout。我使用以下几行来纠正水平维度中的这种行为:

但是,这仍然使我的按钮的高度小于常规(按钮)按钮。我已经尝试过各种其他尺寸政策,但均未成功。

如何最好地解决这个问题?是否有可靠的方法来确定“正常”按钮高度?

我的一个想法是创建一个普通的虚拟按钮,将它放在相同的布局中,然后读取它的大小。然后可以将此大小应用于我的 QToolButton 并且虚拟按钮将再次被销毁。有没有更优雅/可靠的方式?

0 投票
0 回答
515 浏览

c++ - Qt 对话框大小策略

我正在尝试在我创建的自定义 QDialog 类上设置大小策略。这个想法对我来说听起来很简单,但似乎我缺少一个明显的 Qt 框架概念或范式。我在下面创建了一个 LineDialog 类,其中包含 5 个 QRadioButtons。它们都包裹在一层额外的布局嵌套中的原因是我将很快添加其他按钮组,假设我可以让一个工作。我想要的是对话框在打开时处于最小尺寸,同时仍显示所有单选按钮。我目前收到的输出是一个对话框,其大小与整个计算机屏幕一样大,其中包含 5 个单选按钮,它们之间由等量的垂直空间隔开,右侧还有大量的填充。

我尝试调用调用类中setSizePolicy(QSizePolicy::Minumum)line_dialog指针和 LineDialog 的所有内容,如注释掉的行所示。但是,我收到关于 SetSizePoliy 如何是私有函数的编译器错误,并且不能像我正在做的那样被调用。这样做的正确方法是什么?

(我还没有完成并正确释放我的堆内存,所以请忽略它)

线对话框.cpp

调用类

0 投票
0 回答
1786 浏览

qt - QMainWindow:中央小部件和停靠小部件的大小管理

当窗口的大小发生变化时,我希望主窗口保持停靠小部件大小和中心小部件大小的近似比例。我用中央小部件和 6 个停靠小部件编写了最简单的主窗口:

启动时,它看起来如下:

在此处输入图像描述

我可以缩小它:

在此处输入图像描述

再展开回来,展开后就和第一张截图一样。没事。

问题是,如果用户“触摸”中央小部件边界(我的意思是,手动更改中央小部件的大小,永远只是一点点),然后主窗口会显着改变其策略:在用户触摸中央小部件后,然后缩小窗口,然后展开它,所有的dockwidgets都有它们的最小尺寸:

在此处输入图像描述

问题是,如何防止这种行为?或者,更一般地说,我如何影响 的规模政策QMainWindow?我找不到关于我上面解释的行为的任何文档。

0 投票
1 回答
5200 浏览

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

主要问题

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

我认为 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 的最小宽度,但它会阻止用户将其调整为尽可能小。

0 投票
0 回答
696 浏览

c++ - QSizePolicy::Minimum 不会最小化 qwidget

我想在 Qt-C++ 项目中具有以下布局:一个 VBoxLayout,其中有两个 QTextEdits 在彼此下方。最上面的应该缩小到最小尺寸:如果有一行,则为 1 行,如果有更多则更大。底部的应该占用窗口中的剩余空间。

我现在在我的主窗口(扩展 QMainWindow)的构造函数中有以下代码:

使用此代码,第二个 QTextEdit 确实变得比第一个大,但第一个似乎认为它的最小尺寸应该是 192 像素(14 行),这远远高于它真正需要的行数:1。这是大小由 sizehint 给出,而不是最小高度。不幸的是,似乎没有办法在不继承 QTextEdit 的情况下适应 sizehint。

从上面的代码中可以看出,我尝试了不同的方法来提出一个最小的 QTextEdit 和一个扩展的。唯一可行的是设置第一个 QTextEdit 的最大高度,这是我不想硬编码的,因为其中的文本可能大于我现在硬编码的某个限制。加上硬编码限制不是很好的编码实践。

因为我想在我的应用程序(QTextEdit,标签,按钮,...)中对不同的 qwidgets 使用类似的大小,所以我宁愿不必使用继承,因为这会带来很多额外的类,这些类都会改变,但只有一个他们父类的东西。

我在 Qt 5.7.0 中工作。

注意:在 Qt 中似乎有很多关于 qsizepolicy 和调整大小的问题。如果我错过了这个问题的副本,您可以自由链接并关闭这个问题。