分割QT窗口

laiweili 2012-03-08 10:47:17
如何将一个QT窗口分割成4个小窗口,而且四个窗口大小是可以调节的,就像一个窗口被一个十字型的两条线切割,并且只要改变其中的一个窗口,其他的三个窗口都会改变?恳求高手帮忙!!!!
...全文
423 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiachm 2012-03-12
  • 打赏
  • 举报
回复
哈哈,需要在楼上几位的UI基础上加一点代码啦。

在splitter移动时,调用splitter->sizes()会得到splitter中的控件尺寸。

那我们只需要把splitter的splitterMoved信号连接到我们的槽上,在槽里同步splitter_2的sizes即可。

代码大致如下:


void Dialog::on_splitter_splitterMoved(int pos, int index)
{
ui->splitter_2->setSizes(ui->splitter->sizes());
}
wopabe 2012-03-12
  • 打赏
  • 举报
回复
看懂了,楼上说的很对
laiweili 2012-03-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ma12shuai 的回复:]

这个是十字型的,可以改变的。
HTML code
<ui version="4.0" >
<class>Dialog</class>
<widget class="QDialog" name="Dialog" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>533</width>……
[/Quote]
你这个代码怎么和2楼的差不多??
laiweili 2012-03-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ma12shuai 的回复:]

不好意思,贴错了
[/Quote]
那能不能做成十字形的?
laiweili 2012-03-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jdwx1 的回复:]

引用 2 楼 laiweili 的回复:

谢谢,但是我想要的是一个十字型的,你这个调节垂直的分割线是两条

Qt只能这样,做不成MFC那样的分割窗口。
[/Quote]
那知道了,谢谢!
xiachm 2012-03-12
  • 打赏
  • 举报
回复
哦,补充一下,上面的代码只给出了splitter在移动时的同步,我们还需要处理splitter_2的移动,它和之前的代码几乎一样,只是反过来控制另一个,这个,你懂的

void Dialog::on_splitter_2_splitterMoved(int pos, int index)
{
ui->splitter->setSizes(ui->splitter_2->sizes());
}
jdwx 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 laiweili 的回复:]

谢谢,但是我想要的是一个十字型的,你这个调节垂直的分割线是两条
[/Quote]
Qt只能这样,做不成MFC那样的分割窗口。
laiweili 2012-03-09
  • 打赏
  • 举报
回复
谢谢,但是我想要的是一个十字型的,你这个调节垂直的分割线是两条
天黑黑 2012-03-09
  • 打赏
  • 举报
回复
不好意思,贴错了
天黑黑 2012-03-09
  • 打赏
  • 举报
回复
这个是十字型的,可以改变的。
<ui version="4.0" >
<class>Dialog</class>
<widget class="QDialog" name="Dialog" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>533</width>
<height>404</height>
</rect>
</property>
<property name="windowTitle" >
<string>Dialog</string>
</property>
<widget class="QSplitter" name="splitter_3" >
<property name="geometry" >
<rect>
<x>10</x>
<y>10</y>
<width>512</width>
<height>384</height>
</rect>
</property>
<property name="orientation" >
<enum>Qt::Vertical</enum>
</property>
<widget class="QSplitter" name="splitter" >
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<widget class="QListWidget" name="listWidget" />
<widget class="QListWidget" name="listWidget_2" />
</widget>
<widget class="QSplitter" name="splitter_2" >
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<widget class="QListWidget" name="listWidget_3" />
<widget class="QListWidget" name="listWidget_4" />
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>
jdwx 2012-03-08
  • 打赏
  • 举报
回复
要用到3个QSplitter。
1:最外面一个水平的QSplitter
2:上下各一个垂直的QSplitter
下面是UI的代码,另存为一个Qt设计师文件(*.ui)

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>551</width>
<height>411</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QSplitter" name="splitter_3">
<property name="geometry">
<rect>
<x>20</x>
<y>10</y>
<width>512</width>
<height>384</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QListWidget" name="listWidget"/>
<widget class="QListWidget" name="listWidget_2"/>
</widget>
<widget class="QSplitter" name="splitter_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QListWidget" name="listWidget_3"/>
<widget class="QListWidget" name="listWidget_4"/>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>

16,816

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧