找回密码
 立即注册
收起左侧

界面中部分组件如何跟随窗口大小自动调整

10
回复
12181
查看
[复制链接]
累计签到:7 天
连续签到:1 天
来源: 2014-5-16 21:40:58 显示全部楼层 |阅读模式
1Qter豆
    环境:Windows 7 + Qt 5.2.1+ Qt Creator 3.0.1

       我已经在QT Designer中将界面都做好了(图一),现在想让部分组件在窗口最大化时能跟着调整。图2中右侧文本编辑框、左侧的标签控件、和右下方的几个组件都没有跟着做调整。尝试使用布局管理器,但是布好的界面会被打乱,组件的大小也会变化。想通过增加spacer来使组件在使用布局的时候不会被改变,但未能达到要求。界面里的组件都是自己慢慢调坐标才对齐的(为啥没找到左对齐之类的工具呢),我不想因为加个布局搞乱了。

图一:


图二:

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

先在纸上设计好,然后再在UI上设计。
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2014-5-16 21:40:59 显示全部楼层
木易不是杨 发表于 2014-5-16 23:50
综合利用?真的很难整啊,每次都弄乱到退不回去…………

先在纸上设计好,然后再在UI上设计。
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2014-5-16 22:20:39 显示全部楼层
这样的问题就是布局管理器的问题,你可以试着综合利用各种布局管理器。
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2014-5-16 23:50:36 显示全部楼层
Syylc120317 发表于 2014-5-16 22:20
这样的问题就是布局管理器的问题,你可以试着综合利用各种布局管理器。

综合利用?真的很难整啊,每次都弄乱到退不回去…………
回复

使用道具 举报

尚未签到

2014-5-17 00:07:14 显示全部楼层
木易不是杨 发表于 2014-5-16 23:50
综合利用?真的很难整啊,每次都弄乱到退不回去…………

不建议用设计器,用代码加
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2014-5-17 08:58:29 显示全部楼层
Joey_Chan 发表于 2014-5-17 00:07
不建议用设计器,用代码加

意思是在设计器设计好后,用代码加布局管理器?
回复

使用道具 举报

尚未签到

2014-5-17 21:28:46 显示全部楼层
木易不是杨 发表于 2014-5-17 08:58
意思是在设计器设计好后,用代码加布局管理器?

不是。。是完全不用设计器
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2014-5-17 23:50:51 显示全部楼层
Joey_Chan 发表于 2014-5-17 21:28
不是。。是完全不用设计器

喜大普奔,我用代码加布局管理器基本实现想要的了,就差那么一点点了(不用设计器估计自己搞不来
如下图,红色框框两边分别是一个管理器,我想让他们之间的距离小一点,真的就差一点点,有啥办法么

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

尚未签到

2014-5-18 00:00:26 显示全部楼层
木易不是杨 发表于 2014-5-17 23:50
喜大普奔,我用代码加布局管理器基本实现想要的了,就差那么一点点了(不用设计器估计自己搞不来)
如 ...

我记得layout有个setMergin的函数可以设置边距
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2014-5-19 22:31:46 显示全部楼层
Joey_Chan 发表于 2014-5-18 00:00
我记得layout有个setMergin的函数可以设置边距

没有效果哦,暂时不管这个问题了,时间不多。我现在给tabwidget组件安装了个过滤器,过滤鼠标单击事件,一直无效。可是修改后安装到pushbutton上却可行。
下面是重载的代码,在MainWindow::MainWindow中用ui->tabWidget->installEventFilter(this);进行注册。我看帮助文件也是这么写的,真是看不出哪里的问题。
  1. bool MainWindow::eventFilter(QObject * watched, QEvent * event)
  2. {
  3.        if (ui->tabWidget == watched)
  4.        {
  5.                if (QEvent::MouseButtonPress == event->type())
  6.               {
  7.                      return true;
  8.               }
  9.               else
  10.               {
  11.                     return false;
  12.               }
  13.        }
  14.        else
  15.        {
  16.               return QMainWindow::eventFilter(watched, event);
  17.        }
  18. }
复制代码
回复

使用道具 举报

尚未签到

2014-5-20 09:12:01 显示全部楼层
木易不是杨 发表于 2014-5-19 22:31
没有效果哦,暂时不管这个问题了,时间不多。我现在给tabwidget组件安装了个过滤器,过滤鼠标单击事件, ...

哎呀。。这个以前用过,忘了。。。。。。。

要不你另外开一个帖子,看看有没有人回答
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了