Qt 怎样让ui子窗口随程序中主窗口的大小一起变化?急!!!

bestman 2012-02-22 04:40:51
在主窗口中设置一个horizontalLayout,把多个按钮控件放在这个horizontalLayout中,
然后写了个resizeEvent(QResizeEvent *event),在这个函数里添加了
ui->horizontalLayout->setGeometry(QRect(20,this->height()-100,this->width()-20,80));
可是这样horizontalLayout和里面的按钮控件还是不随着主窗口的大小而变化。
我想实现的功能是,当LCD屏的分辨率改变时,主窗口放大,主窗口中的horizontalLayout也会随主窗口间距变大。
有哪位知道这方面的,帮我下,不身感激啊!!!
...全文
2239 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
baiyangmeng 2013-10-16
  • 打赏
  • 举报
回复
是QGridLayout* mainLay=new QGridLayout; mainLay->addLayout(ui->gridLayout,1,1);吗?
baiyangmeng 2013-10-16
  • 打赏
  • 举报
回复
怎样在外面再套一层布局啊?
bestman 2012-02-22
  • 打赏
  • 举报
回复
恩,谢谢了,就是这样!我在外面加了一层GridLayout就可以了!
bestman 2012-02-22
  • 打赏
  • 举报
回复
就是在外面在套一层布局,我先试试看
bestman 2012-02-22
  • 打赏
  • 举报
回复
对你的建议我启发很大,我先试试看,行的话就结贴
念茜 2012-02-22
  • 打赏
  • 举报
回复
外面再套一层布局不行么?
xiachm 2012-02-22
  • 打赏
  • 举报
回复
我刚才已经说过了,主窗口还需要一个布局,由它来决定你的horizontalLayout的大小。

我不知道你是在代码中写的,还是在界面设计器里做的,索性给你提出一个UI文件来,你拷贝过去看看就知道了。


<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CMainForm</class>
<widget class="QWidget" name="CMainForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>CMainForm</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>


用这个替换一下你的ui文件就行
bestman 2012-02-22
  • 打赏
  • 举报
回复
我看过layoutLeftMargin,layoutRightMargin,这两个只能设置按钮控件在horizontalLayout这个布局里的左右边距,但是horizontalLayout还是不能随主窗口收缩而变化啊
xiachm 2012-02-22
  • 打赏
  • 举报
回复
楼主使用代码写的,还是用设计器做的?

你的主窗口还需要增加一个布局才行。

另外,ui->horizontalLayout->setGeometry(QRect(20,this->height()-100,this->width()-20,80));这句话非常没有必要,如果你想留出间距,可以设置布局中的layoutLeftMargin,layoutRightMargin等等。

对于这样的疑惑,建议楼主打开UI 设计器,在里面画画,然后编译出来,看看它的.h文件里是怎么写的。

16,216

社区成员

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

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