小编Gar*_*her的帖子

防止 QDockWidget 自动调整大小行为

Qt 5.5.0

在我的应用程序中,我有一个 QGraphicsView 作为主要小部件和一个 QDockWidget 作为属性。目标是让用户在图形视图中选择一个项目,并根据该项目显示该项目的适当属性。

我通过使用属性管理器小部件来实现此目的,该小部件的布局包含每个属性小部件。我连接了信号和插槽来获取当前选定的项目,然后显示()我需要的小部件并隐藏()其余部分。

这太棒了!但是,当选择不同的项目时,停靠栏会根据显示的小部件缩小或增大。这是非常刺耳的,而且相当烦人。但问题是,当用户手动调整扩展坞的大小时,它会保持该大小。我希望保留的大小是默认的,而不是这种自动调整大小的行为。


我尝试过的事情:

我尝试更改扩展坞和主窗口的 sizePolicy():没有效果。

我已经为属性管理器设置了最小大小,这确实可以防止在显示较小的属性集时缩小扩展坞。但是,我仍然希望用户能够根据需要将扩展​​坞缩小到更小的尺寸,而这种方法可以防止这种情况发生......


结论:

当用户调整扩展坞大小时是否设置了一个标志或其他内容,告诉它保持该大小?如果可以的话,有没有办法手动设置呢?

我还没有尝试子类化 QDockWidget 或 QMainWindow 。是否有我可以覆盖的方法来实现正确的行为?

谢谢你的帮助!

c++ qt qdockwidget

6
推荐指数
1
解决办法
1976
查看次数

基于位数的 int 中的最大位数

因此,我需要一个常量值来表示 int 中的最大位数,并且需要在编译时计算它以传递给 char 数组的大小。

添加更多细节:我正在使用的编译器/机器具有非常有限的 C 语言子集,因此没有一个 std 库可以工作,因为它们具有不受支持的功能。因此,我不能使用 INT_MIN/MAX,因为我既不能包含它们,也不能定义它们。

我需要一个计算大小的编译时表达式。我想出的公式是:

((sizeof(int) / 2) * 3 + sizeof(int)) + 2
Run Code Online (Sandbox Code Playgroud)

基于手工计算的 n 字节整数略微成功。

sizeof(int)  INT_MAX               characters    formula
2           32767                       5            7
4           2147483647                  10           12
8           9223372036854775807         19           22
Run Code Online (Sandbox Code Playgroud)

c

-1
推荐指数
1
解决办法
4820
查看次数

标签 统计

c ×1

c++ ×1

qdockwidget ×1

qt ×1