Qt 5.5.0
在我的应用程序中,我有一个 QGraphicsView 作为主要小部件和一个 QDockWidget 作为属性。目标是让用户在图形视图中选择一个项目,并根据该项目显示该项目的适当属性。
我通过使用属性管理器小部件来实现此目的,该小部件的布局包含每个属性小部件。我连接了信号和插槽来获取当前选定的项目,然后显示()我需要的小部件并隐藏()其余部分。
这太棒了!但是,当选择不同的项目时,停靠栏会根据显示的小部件缩小或增大。这是非常刺耳的,而且相当烦人。但问题是,当用户手动调整扩展坞的大小时,它会保持该大小。我希望保留的大小是默认的,而不是这种自动调整大小的行为。
我尝试过的事情:
我尝试更改扩展坞和主窗口的 sizePolicy():没有效果。
我已经为属性管理器设置了最小大小,这确实可以防止在显示较小的属性集时缩小扩展坞。但是,我仍然希望用户能够根据需要将扩展坞缩小到更小的尺寸,而这种方法可以防止这种情况发生......
结论:
当用户调整扩展坞大小时是否设置了一个标志或其他内容,告诉它保持该大小?如果可以的话,有没有办法手动设置呢?
我还没有尝试子类化 QDockWidget 或 QMainWindow 。是否有我可以覆盖的方法来实现正确的行为?
谢谢你的帮助!
因此,我需要一个常量值来表示 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)