丨封尘绝念斩丨 2024-01-04 18:50 采纳率: 100%
浏览 9
已结题

QT开发分辨率适配?

请问一下QT开发界面能自适应分辨率吗?每次设计的控件只能适应一种分辨率,使用很不方便。

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-04 20:05
    关注

    【相关推荐】



    • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: 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样式表加载完成。
      在这里插入图片描述
      运行结果:
      在这里插入图片描述

      这就是第三方法,这种方法在界面样式较复杂时,我们在文件中编写样式,内容比较清晰,降低耦合性(与逻辑代码分离)。

      • 三种方法使用哪一种?
      • 对于初学者,我认为第一种方法是首选,因为初学者往往不需要过多复杂控件,对于少量的控件,代码也不是很多,使用第一种方法简单高效,并且可以帮助我们检验样式是否编写正确,这是对于初学者最有帮助。
      • 对于有一点基础的,随着学习的深入,不用我说,也应该感觉到第一种的局限性,也就是我说是的缺点,这个时候就应该使用第二种方法,来弥补第一种方法带来的缺陷,这个时候控件还不是很多,代码写样式表还容易找。
      • 第三种方法就是对于你已经很厉害了,能写出一个自己看得过去的程序了,控件也多了起来,业务逻辑也多了起来,这个时候就可以降低耦合性(与逻辑代码分离),从而使用第三方法。
      • 最终的建议就是说将第二种和第三者方法结合使用,来弥补各自的不足。

      为了讲解方便,下面的说明将使用第一种方法展开。



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月12日
  • 已采纳回答 1月4日
  • 创建了问题 1月4日

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题