请问一下QT开发界面能自适应分辨率吗?每次设计的控件只能适应一种分辨率,使用很不方便。
3条回答 默认 最新
关注 【相关推荐】
- 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7804799
- 这篇博客你也可以参考下:QT设计界面如何在放大或者缩小的时候,相对位置随着画布放大或者缩小改变?
- 您还可以看一下 梅会东老师的Qt高级系列之8:Qt多线程线程池数据同步机制及文件下载器项目实战课程中的 断点续传及配置文件的讲解小节, 巩固相关知识点
- 除此之外, 这篇博客: 初学Qt不会样式表怎么办,打包好的Qt样式表一键生成送给你。中的 ➡️3.创建qss文件添加样式 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
创建qss文件不要使用windows下的记事本,这里推荐使用
Nodetad++或者更高级的编辑器。否则可能会出错。
原因是记事本生成的utf-8文件是带bom(自行百度),这个我们无法通过记事本去掉,而Nodetad++可以,尽管qt在编码项目-编码有一个总是bom的选项,但是经测试,没什么用,bom还是存在,可以看一下这个Qt读取qss文件失败或qss不生效解决方案。
我们创建一个qss后缀的文件,并写入#label { background:rgb(100,100,100); }
将这个qss文件作为资源文件加载到qt中,如下图,创建一个资源文件,并添加现有文件(qss文件):
在构造函数中编写如下代码:QString qss; QFile qssFile("./lib/sheet.qss"); qssFile.open(QFile::ReadOnly); if(qssFile.isOpen()) { qss=QLatin1String(qssFile.readAll()); qDebug()<<qss; this->setStyleSheet(qss); qssFile.close(); }
最后将utf-8 bom由原先的是utf-8就添加改为目前存在了则保留。至此qss样式表加载完成。
运行结果:
这就是第三方法,这种方法在界面样式较复杂时,我们在文件中编写样式,内容比较清晰,降低耦合性(与逻辑代码分离)。
- 三种方法使用哪一种?
- 对于初学者,我认为第一种方法是首选,因为初学者往往不需要过多复杂控件,对于少量的控件,代码也不是很多,使用第一种方法简单高效,并且可以帮助我们检验样式是否编写正确,这是对于初学者最有帮助。
- 对于有一点基础的,随着学习的深入,不用我说,也应该感觉到第一种的局限性,也就是我说是的缺点,这个时候就应该使用第二种方法,来弥补第一种方法带来的缺陷,这个时候控件还不是很多,代码写样式表还容易找。
- 第三种方法就是对于你已经很厉害了,能写出一个自己看得过去的程序了,控件也多了起来,业务逻辑也多了起来,这个时候就可以降低耦合性(与逻辑代码分离),从而使用第三方法。
- 最终的建议就是说将第二种和第三者方法结合使用,来弥补各自的不足。
为了讲解方便,下面的说明将使用第一种方法展开。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 无线电能传输系统MATLAB仿真问题
- ¥50 如何用脚本实现输入法的热键设置
- ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
- ¥30 深度学习,前后端连接
- ¥15 孟德尔随机化结果不一致
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
- ¥15 谁有desed数据集呀
- ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
- ¥15 关于#hadoop#的问题