Qt布局错乱问题

whppmy 2017-11-23 09:35:02
最近做了个小软件 获取鼠标当前位置
打开时是这样的

运行一会后(时间不定 会突然变成这样子 布局乱掉)


首先,图片上面是四个QLabel 属性

x和坐标是用verticalLayout y和坐标也是用verticalLayout 最后再用一个horizontalLayout布局捆绑在一起
其实还有个z和坐标的(horizontalLayout里面一共六个控件 我用hide方法隐藏了)
horizontalLayout的layoutStretch设置为1,1,0

我觉得的问题点 就是QLabel的属性问题 或者是布局的伸缩因子不对
因为刚学Qt一个多月 不是很懂具体哪里出现的问题 请教一下前辈 在线等!!
...全文
931 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
走好每一步 2017-12-01
  • 打赏
  • 举报
回复
做法不对的,不要的控件从ayout移除就可以了,要的时候加回来。
whppmy 2017-12-01
  • 打赏
  • 举报
回复
引用 12 楼 tajon1226 的回复:
做法不对的,不要的控件从ayout移除就可以了,要的时候加回来。
这个方法感觉很稳
走好每一步 2017-11-30
  • 打赏
  • 举报
回复
#include "mainwindow.h"
#include <QApplication>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QLineEdit>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
//    MainWindow w;

    QWidget *w = new QWidget;
    QVBoxLayout *vlayout = new QVBoxLayout;

    QHBoxLayout *hlayout1 = new QHBoxLayout;
    hlayout1->addWidget(new QLabel("X"));
    hlayout1->addWidget(new QLineEdit());
    vlayout->addLayout(hlayout1);

    QHBoxLayout *hlayout2 = new QHBoxLayout;
    hlayout2->addWidget(new QLabel("Y"));
    hlayout2->addWidget(new QLineEdit());
    vlayout->addLayout(hlayout2);

    QHBoxLayout *hlayout3 = new QHBoxLayout;
    hlayout3->addWidget(new QLabel("Z"));
    hlayout3->addWidget(new QLineEdit());
    vlayout->addLayout(hlayout3);

    vlayout->removeItem(vlayout->itemAt(2));
    //vlayout->addLayout(hlayout3);

    w->setLayout(vlayout);
    w->show();


    return a.exec();
}
whppmy 2017-11-30
  • 打赏
  • 举报
回复
引用 9 楼 tajon1226 的回复:
赵4老师的回帖是无敌的,什么都是内存问题,嘻嘻。 我不知道你把布局说错了,还是我看错了 应该是这样吧 VBoxLayout HBoxLayout (x, value) HBoxLayout(y, value) VBoxLayout 感觉布局很容易理解啊
VBoxLayout HBoxLayout (x, xvalue) HBoxLayout(y, yvalue) HBoxLayout(z, zvalue) z和zvalue都用hide隐藏起来了 用到才会show出来 而且VBoxLayout在代码中会根据z显示进行设置 如显示就 z.show zvalue.show VBoxLayout.setStretch(2,1); 隐藏 z.hide zvalue.hide VBoxLayout.setStretch(2,0);
走好每一步 2017-11-29
  • 打赏
  • 举报
回复
赵4老师的回帖是无敌的,什么都是内存问题,嘻嘻。 我不知道你把布局说错了,还是我看错了 应该是这样吧 VBoxLayout HBoxLayout (x, value) HBoxLayout(y, value) VBoxLayout 感觉布局很容易理解啊
whppmy 2017-11-29
  • 打赏
  • 举报
回复
顶一下 还是相找出问题
whppmy 2017-11-23
  • 打赏
  • 举报
回复
引用 4 楼 feiyangqingyun 的回复:
很明显,代码问题!
跟我说的两种情况没关系吗?
feiyangqingyun 2017-11-23
  • 打赏
  • 举报
回复
很明显,代码问题!
赵4老师 2017-11-23
  • 打赏
  • 举报
回复
自己在任务管理器中观察到底是内存还是GDI泄露。
whppmy 2017-11-23
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏! 搜“GDI泄露检测”
赵老师 这种情况是内存泄漏造成的?
赵4老师 2017-11-23
  • 打赏
  • 举报
回复
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏! 搜“GDI泄露检测”
whppmy 2017-11-23
  • 打赏
  • 举报
回复
引用 6 楼 ch122633 的回复:
我怎么感觉你的代码里修改了Qlabel的字体 看上去好像加粗了。。。所以看着有点不太对
不是同一时间截的图 他发病时间不定 只能拿昨天截的图 现在用的是新宋体 昨天是微软雅黑
习惯就好zz 2017-11-23
  • 打赏
  • 举报
回复
我怎么感觉你的代码里修改了Qlabel的字体 看上去好像加粗了。。。所以看着有点不太对

16,203

社区成员

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

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