2012-03-10 179 views
14

我在使用拖放方式在Qt中创建视图时遇到大小问题。使用Qt设计器Qt分割器布局调整行为

让我开始用图像帮我解释一下

enter image description here

这是我的形式主窗口。

会发生什么事是:

我们有4级选项卡的小部件。左侧标签小部件在2个中间小部件上具有水平分离器。 2中间部件有一个垂直分离器,左侧和右侧有一个水平分离器。

右侧小部件的左侧有一个垂直分离器。

所以所有的视图都使用分离器连接。

最后,mainform以可调整大小的方式使用水平布局将所有内容粘在一起。

问题是,最左边和最右边的小部件的宽度是固定的(在设计器中)。 我希望它们的宽度更小。类似的东西来:

enter image description here

你可以看到小部件被调整。我能够运行应用程序并手动调整分离器。 QtDesigner有没有办法做到这一点?我试着玩政策。但是,我没有真正进一步了解。这是否表明我对政策缺乏认识?也许布局一般?

我应该使用什么选项来实现使用QtDesigner所需的布局。我想避免使用代码。

希望我能尽快解决这个问题。它必须俯瞰简单的东西。

+0

我使用分离器的第一次,我没有看到任何东西,使设计人员我配置分配器的位置。我试图通过对话框的构造函数中的代码尝试设置它(可能尝试将分离器一侧的组件重新调整到最小),但还没有到达那里。我很想听听其他人有什么要说的。 – aldo 2012-03-10 21:23:20

+0

很高兴ehar im不是唯一一个有此问题的人。它应该是如此简单。但是设置最小宽度等大小约束似乎对我没有帮助。 – 2012-03-10 21:51:38

+0

尺寸可以使用[QSplitter的setStretchFactor功能](http://doc.qt.nokia.com/4.8-snapshot/qsplitter.html#setStretchFactor)进行设置。但正如您已经注意到的那样,它不能在Qt Designer中设置。 – 2012-03-10 22:28:26

回答

9

你可以玩“水平拉伸”和“垂直拉伸”属性来改变分割的位置。

例如,顶部中心QTabWidget的垂直拉伸和中心QSplitter的水平拉伸为1,所有其他值都保持为0,则会得到所需的结果。

当您有多个非零拉伸值时,设计师看不到比例结果(例如:在2和1处的垂直拉伸2个中心QTabWidget s => 2/3和1/3)但在运行应用程序时似乎正在工作。

PS:您也可以达到同样的效果与tabbified QDockWidget秒,但码头tabbification不可能通过只为设计师。

+0

我不敢相信这是这么简单。我用第一个,中间部件和中间分离器来拉伸1,它工作正常。 – 2012-03-11 06:36:26

+0

谢谢!像魅力一样工作! – aakashbhowmick 2012-03-23 01:22:34

1

我设置起始位置是:

QList<int> list= ui->splitter->sizes(); 
list.replace(0,this->height()/0.3); 
list.replace(1,this->height()/0.7); 
ui->splitter->setSizes(list); 

,并记住最小尺寸的子控件