Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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 如何调整QDockWidget的大小_Qt_Resize_Qdockwidget - Fatal编程技术网

Qt 如何调整QDockWidget的大小

Qt 如何调整QDockWidget的大小,qt,resize,qdockwidget,Qt,Resize,Qdockwidget,我在主窗口中创建了一个没有centralwidget的应用程序,显示为maximized: setCentralWidget(0); setWindowState(Qt::WindowMaximized); 在我的主窗口,我有三个码头。dock1设置为停靠在leftDockWidgetArea,dock2和dock3设置为停靠在rightDockWidgetArea。此外,我还安排了2号码头和3号码头 splitDockWidget(ui->dock2, ui->dock3, Qt

我在主窗口中创建了一个没有centralwidget的应用程序,显示为maximized:

setCentralWidget(0);
setWindowState(Qt::WindowMaximized);
在我的主窗口,我有三个码头。dock1设置为停靠在leftDockWidgetArea,dock2和dock3设置为停靠在rightDockWidgetArea。此外,我还安排了2号码头和3号码头

splitDockWidget(ui->dock2, ui->dock3, Qt::Horizontal);
所以我得到了一个结果,三个码头的宽度之比是

我的问题是我如何设置三个码头的宽度,以便它们可以按顺序排列

假设我的屏幕宽度是1024。我试过了

ui->dockWidget_PrimeVis->resize(1000, 1000);
这不起作用,因为我发现有些人说码头的大小由主窗口控制。所以我发现我可以在主窗口中调用ResizeDock,例如

resizeDocks({ ui->dock1, ui->dock2,ui->dock3}, { 150,600,150 }, Qt::Horizontal); 
而且它不起作用。此外,由于每个dock都包含一个子类小部件,我还尝试设置每个子类小部件的大小,同样,这不起作用

因为我们可以通过GUI手动更改每个dock的大小,所以我相信应该有一种方法可以用代码设置每个dock的大小,对吗?有人有线索吗?

官方声明如下:

QDockWidget
充当其子小部件的包装器,使用
setWidget()
进行设置。自定义大小提示、最小和最大大小以及大小策略应在子窗口小部件中实现
QDockWidget
将尊重它们,调整自身的约束以包括框架和标题。不应在
QDockWidget
本身上设置大小限制,因为它们会根据是否停靠而变化;停靠的
QDockWidget
没有框架和较小的标题栏

解决方案:

只需对dockwidget内部显示的小部件进行子类化。您可以通过重载不同的方法来更改大小提示。例如:

未测试:


你也可以试试看。但是我不知道这是否有效。

谢谢你,蒂姆。但是,我不想更改包含小部件的最小大小。换句话说,dock1 dock2和dock3的最小宽度都应为150。我想应该有办法直接改变码头的几何结构,对吗?