Qt实战案例(13)——Qt的界面外观详细介绍

article/2025/9/15 7:47:17

目录

  • 一、Qt风格
    • 1.1 对风格进行预览
    • 1.2 风格使用
  • 二、Qt样式表
    • 2.1 使用代码设置样式表
    • 2.2 在设计模式中设置样式表
    • 2.3 Qt样式表的语法
    • 2.4 子控件(Sub-Controls)
    • 2.5 伪状态(Pseudo-States)
    • 2.6 继承
    • 2.7 qss
    • 2.8 代码示例
  • 三、特殊效果窗体
  • 四、总结

一、Qt风格

Qt中的各种风格是一组继承自QStyle的类。QStyle类是一个抽象基类,封装了一个GUI的外观,Qt的内建(built-in)部件使用它来执行几乎所有的绘制工作,以确保它们看起来像各个平台上的本地部件一样。QStyleFactory类可以创建一个QStyle对象,首先通过keys()函数获取可用的风格,然后使用create()函数创建一个QStyle对象。一般windows风格和fusion风格是默认可用的,而有些风格旨在特定的平台上才有效,如windowsxp风格、windowsvista风格、gtk风格和macintosh风格。

1.1 对风格进行预览

对风格进行预览的步骤如下:
点击ui进入UI界面——>工具——>Form Editor——>Preview in
如下图所示:
在这里插入图片描述
这里列出了三种可用的风格,选择“Fusion风格”,预览效果如下图所示。
在这里插入图片描述

1.2 风格使用

如果想使用不同的风格来运行程序,只需要调用QApplication的setStyle()函数来指定要使用的风格即可。打开main.cpp文件,添加头文件包含#include<QStyleFactory>,然后在添加如下代码:

a.setStyle(QStyleFactory::create("fusion"));

如下:
在这里插入图片描述
这时运行程序便会使用Fusion风格。

如果不想在整个应用程序中都使用相同的风格,可以调用部件的setStyle()函数来指定该部件的风格。在mainwindow.cpp文件中,先添加头文件包含#include<QStyleFactory>,然后在构造函数中添加如下代码:

ui->progressBar->setStyle(QStyleFactory::create("fusion"));

这时再次运行程序,其中仅有进度条部件变为fusion风格了。

二、Qt样式表

Qt样式表是一个可以自定义部件外观的十分强大的机制,Qt样式表的相关概念都受到了HTML的层叠样式表(Cascading Style Sheets,CSS)的启发,不过与CSS不同的是,Qt样式表应用于部件的世界。

样式表可以使用QApplication::setStyleSheet()函数将其设置到整个应用程序上,也可以使用QWidget::setStyleSheet()函数将其设置到一个指定的部件(还有它的子部件)上。

2.1 使用代码设置样式表

代码示例:

    //设置pushbutton的背景为黄色ui->pushButton->setStyleSheet("background:yellow");//设置groupBox的背景为蓝色ui->groupBox->setStyleSheet("background:blue");

这样就设置了两个部件的背景色,可以运行程序查看效果:
在这里插入图片描述
如果想对所有的相同部件都使用相同的样式表,那么可以在它们的父部件上设置样式表。代码如下:

setStyleSheet("QPushButton{background:yellow}QGroupBox{background:blue}");

运行结果:
在这里插入图片描述
这样,所有的QPushButton部件和QGroupBox部件的背景色都会改为指定的颜色。

2.2 在设计模式中设置样式表

先注释掉上述代码,在UI界面中右击选择“改变样式表”,
在这里插入图片描述
这时会出现编辑样式表对话框,在其中输入如下代码:

QPushButton{
}

然后光标在括号中间,单击“添加颜色”,手动选择对应的颜色样式,点击ok。
在这里插入图片描述
这样可以很便捷直观的设置样式表。

2.3 Qt样式表的语法

Qt样式表的语法和CSS基本相同。每个样式规则由选择器(selector)和声明(declaration)组成,例如:

QPushButton{color:red}

在这个样式规则中,QPushButton是选择器,{color:red}是声明。其中color是属性,red是值。这个规则制定了QPushButton和它的子类应该使用红色作为前景色。Qt样式表不区分大小写。
一些选择器可以指定相同的声明,使用逗号隔开,例如:

QPushButton,QLineEdit,QComboBox{color:red}

【注】:我们可以在Qt帮助中输入Qt Style Sheets Reference然后选择List of Properties 项查看Qt控件支持的所有状态。
在这里插入图片描述

2.4 子控件(Sub-Controls)

对于一些复杂的部件修改样式,可能需要访问它们的子控件,如QComboBox的下拉按钮,还有QSpinBox的向上和向下箭头等。选择器可以包含子控件来对部件的特定子控件应用规则,如:

QComboBox::drop-down{image:url(dropdown.png)}

这样可以改变所有QComboBox部件的下拉按钮的样式。

【注】:我们可以在Qt帮助中输入Qt Style Sheets Reference然后选择List of Sub-Controls 项查看Qt控件支持的所有状态。

在这里插入图片描述

2.5 伪状态(Pseudo-States)

选择器可以包含伪状态来限制规则在部件的指定状态上应用。伪状态出现在选择器之后,用冒号隔开,如:

QPushButton:hover{color:white}

这个规则表示当鼠标悬停在一个QPushButton部件上时才被应用。伪状态可以使用感叹号来表示否定,例如,要当鼠标没有悬停在一个QRadioButton上时才应用规则,则可以写为:

QRadioButton:!hover{color:red}

伪状态也可以多个连用,如当鼠标悬停在一个被选中的QCheckBox上时才应用规则:

QCheckBoc:hover:checked{color:white}

也可以使用逗号来表示逻辑或操作,如:

QCheckBoc:hover,QCheckBox:checked{color:white}

当然,伪状态也可以和其他子控件联合使用:

QComboBox::drop-down:hover{image:url(dropdown.png)}

【注】:我们可以在Qt帮助中输入Qt Style Sheets Reference然后选择List of Pseudo-States 项查看Qt控件支持的所有状态。
在这里插入图片描述

2.6 继承

当使用Qt样式表时,部件并不会自动从父部件中继承字体和颜色样式,如对QGroupBox设置样式表:

setStyleSheet("QGroupBox{color:red;}");

但没有对其内部的QPushButton设置样式表,这时QPushButton会使用系统颜色,而不会继承QGroupBox的颜色,如果要将QGroupBox的颜色应用于其子部件,可以这样设置样式:

setStyleSheet("QGroupBox,QGroupBox * {color:red;}");

2.7 qss

Qt样式表可以存放在一个以.qss为后缀的文件中,这样就可以在程序中调用不同的.qss文件实现换肤的功能。qss的详细功能这里就不进行介绍了,有兴趣的可以自行查阅相关资料。

【注】:我们可以在Qt帮助中输入Qt Style Sheets Examples查看样式表的一些应用规范。

2.8 代码示例

下面是QSpinBox部件的样式表代码:

QSpinBox {padding-right: 15px; /* make room for the arrows */border-image: url(:/images/frame.png) 4;border-width: 3;
}
QSpinBox::up-button {subcontrol-origin: border;subcontrol-position: top right; /* position at the top right corner */width: 16px; /* 16 + 2*1px border-width = 15px padding + 3px parent border */border-image: url(:/images/spinup.png) 1;border-width: 1px;
}
QSpinBox::up-button:hover {border-image: url(:/images/spinup_hover.png) 1;
}
QSpinBox::up-button:pressed {border-image: url(:/images/spinup_pressed.png) 1;
}
QSpinBox::up-arrow {image: url(:/images/up_arrow.png);width: 7px;height: 7px;
}
QSpinBox::up-arrow:disabled, QSpinBox::up-arrow:off { /* off state when value is max */image: url(:/images/up_arrow_disabled.png);
}
QSpinBox::down-button {subcontrol-origin: border;subcontrol-position: bottom right; /* position at bottom right corner */width: 16px;border-image: url(:/images/spindown.png) 1;border-width: 1px;border-top-width: 0;
}
QSpinBox::down-button:hover {border-image: url(:/images/spindown_hover.png) 1;
}
QSpinBox::down-button:pressed {border-image: url(:/images/spindown_pressed.png) 1;
}
QSpinBox::down-arrow {image: url(:/images/down_arrow.png);width: 7px;height: 7px;
}
QSpinBox::down-arrow:disabled,
QSpinBox::down-arrow:off { /* off state when value in min */image: url(:/images/down_arrow_disabled.png);
}

三、特殊效果窗体

特殊效果窗体将在下一节进行介绍,可参考:https://blog.csdn.net/didi_ya/article/details/122005117

四、总结

要想为软件设计一个漂亮的界面,需要灵活使用Qt样式表,不过这需要一定的CSS功底,还需要有美工经验。加油~


以上便是本文的全部内容了,如果对你有所帮助,记得点个赞哟~


http://chatgpt.dhexx.cn/article/p4RMjpX0.shtml

相关文章

Qt-UI 界面工具库简介

一、关于Qt-UI界面工具库 Qt-UI界面工具库是武汉维仕杰科技有限公司基于Qt上进行扩展开发的控件包和界面工具&#xff0c;并且拥有完全自主的知识产权。得益于丰富的界面开发经验和强大的支持团队&#xff0c;使得Qt-UI界面开发工具成为最专业、功能强大的Qt开发工具库。 Qt-…

Qt UI界面美化

关于QSS 除原生界面外&#xff0c;Qt提供了加载配置文件的方式来自定义和美化界面外观&#xff0c;这个配置文件也叫做样式表&#xff08;QSS&#xff1a;Qt Style Sheets)&#xff0c;它的语法与css类似&#xff0c;具体支持属性可参考官方文档。 编写QSS文件 新建一个文件…

【思想落地】一文分享Qt界面的设计与开发

文章目录 一、开篇二、软件界面功能分析三、界面实现&#xff08;3-1&#xff09;从界面整体角度规划功能和切片&#xff08;3-2&#xff09;顶部时间参数的处理&#xff08;3-3&#xff09;左侧/右侧按钮控制区&#xff08;3-4&#xff09;中央传感器显示&#xff08;3-5&…

Qt调用主界面ui

一、适用情景 在其他类中使用主界面ui&#xff0c;this&#xff0c;控件操作等 二、步骤 首先&#xff0c;子类需要包含主界面的头文件和ui_xx.h文件&#xff0c;声明主界面类 然后使用构造函数把主界面的指针传递给子类 子类头文件&#xff1a; #ifndef ONEUI_H #define O…

QT——可视化界面ui

目录 1. 需要文件 2.文件关系及编写 3. 源码 4. 界面的模态与非模态 1. 需要文件 test.cpp test.h test.ui ui_test.h 2.文件关系及编写 test.ui&#xff1a; 可视化界面&#xff1b; test.cpp: 启动可视化界面&#xff0c;及可视化界面的各种相关功能源文件&#x…

QT中界面切换的三种方式

本周学习了QT的使用。QT身为一个图形界面的开发框架&#xff0c;在实际使用时必不可少的一环就是对不同界面的切换。本文中总结了自己练习使用过的三种切换界面的方式。 第一种&#xff1a;哪里进行界面切换就在哪里创建界面。 这种方式也是最容易理解的一种&#xff0c;当我们…

Qt界面开发(三)

这次要给大家分享一些我在github和qtcn&#xff08;主要是liudianwu大神&#xff0c;Qt界面开发(一)有很多都是他的作品&#xff09;上找到的比较漂亮且实用Qt界面和控件集合。 -------------------------------------我是分割线------------------------------------- &…

QT界面美化

转自点击打开链接 - 经验总结 1. 可用对话框&#xff08;QDialog&#xff09;模拟类似Android中toast的效果。 - 设置程序界面风格 在main函数中 QApplication::setStyle("windows"); QApplication::setStyle("windowsxp"); QApplication::setStyle("…

QT介绍和基本界面构建(QT一)

目录 一、Qt 介绍二、Qt工程1.工程 firstQt.pro2.Qt入口 三、用Qtcreator集成开发环境创建Qt工程代码ui1.创建项目的时候注意的问题2.desgner设计器界面说明 四、纯代码实现Qt工程创建带ui界面编译运行五、基本组件&#xff08;QLineEidt&#xff0c; QLabel&#xff0c; QPush…

QT 简单的登录界面

一、描述 有登录界面、注册界面&#xff0c;用到sqlite数据库保存账号和密码&#xff0c;界面还没有布局美化等&#xff0c;只实现了最基本的功能。 二、界面及功能介绍 1、登录界面2、注册界面 3、主界面 没想好弄啥功能&#xff0c;于是就弄了两个按钮。 4、文件结构 三、…

(四) 制作一个最简单的qt界面

前面我们学了 (一) 在Windows上搭建Qt环境 (二) Qt新建Android工程 (三) Qt入门篇之C基础 今天我们用Qt制作一个最简单的qt登录界面 一、在PC机上运行 1.QT基础 1.qt的移植性非常强&#xff0c;一套代码我们不用改的太多&#xff0c;直接通用所有的平台,不久的将来&#xff…

【Qt登录界面】

Qt登录界面 文章目录 Qt登录界面前言一、创建项目二、创建数据库及用户表三、登录界面设计四、注册界面设计五、效果图六、参考教程 前言 第一次在这上面写文章&#xff0c;没啥经验&#xff0c;如果有啥不当的地方&#xff0c;请各位大佬批评指正。我刚学Qt不久&#xff0c;结…

QT 简单的QT用户登录界面

简单的QT用户登录界面 一、简单描述 在登录界面输入用户名和密码正确之后才进入欢迎界面。 例子打包&#xff1a;链接: https://pan.baidu.com/s/1HEpNFghMDrBguMt93aRJ_A 提取码: bg4n 二、效果 三、工程文件结构 四、源文件 1、LoginForm02.pro文件 QT widgets guiSOUR…

一文读懂qt界面设计(分裂器,布局,拉伸,各种属性设置)

可以先看看我这个文章&#xff1a;qt关于界面设计中的一些知识总结_我是标同学的博客-CSDN博客_qt 水平伸展 现在我们来正式开始讲解。 布局种类 qt中能称为布局管理器的有如下6个&#xff1a; 水平布局&#xff08;QHBoxLayout&#xff09;垂直布局&#xff08;QVBoxLayout…

Qt界面开发(一)(各种控件以及图表)

注&#xff1a;资源主要来源&#xff1a;http://www.qtcn.org/bbs/u/110085 &#xff08;刘大神&#xff09; 如若侵权&#xff0c;请联系删除。 本文只是将作品集合到起来&#xff0c;方便大家一起学习。 资源集合已经放到 链接&#xff1a;https://pan.baidu.com/s/1sVvQE8…

嵌入式学习之QT学习----3 制作简单的QT界面(如:QQ登录界面)

1、创建一个QT工程 new project —> Application —> Qt Widgets Application —> choose…&#xff08;注意不要有中文路径&#xff09;填写名称&#xff08;我写的名称为class2&#xff09;和创建路径&#xff08;D:\qt\qt_demo\class2&#xff09; —> 填写类名…

QT界面布局和设计

一、设计 对功能和模块进行分析&#xff0c;然后设计对应的模块&#xff0c;将每个模块都用widget展示作为组件。工程结构示例&#xff1a;二、完成模块 代码分别设计各个组件&#xff0c;合适即可三、主界面连接 主界面连接各个子模块。在这里插入代码片#include "AutoFl…

tomcat配置url跳转_tomcat安装目录详解

打开tomcat的解压之后的目录可以看到如下的目录结构&#xff1a; 1.bin&#xff1a; bin目录主要是用来存放tomcat的命令&#xff0c;主要有两大类&#xff0c;一类是以.sh结尾的&#xff08;linux命令&#xff09;&#xff0c;另一类是以.bat结尾的&#xff08;windows命令&a…

【转】URL访问地址和Tomcat项目部署中不得不说的小秘密(JAVA之Tomcat服务器)

今天来简单讲讲tomcat项目部署和url地址访问栏的关系&#xff0c;顺便和大家分享下&#xff0c;叙述不当之处&#xff0c;还请大家多多指导&#xff01; 众所周知&#xff0c;Tomcat项目发布的默认访问地址格式如下&#xff1a;http://localhost:8080/MyDemo/index.jsp 由于we…

tomcat配置url跳转_Tomcat

Tomcat介绍 1.Web服务器介绍 Web服务器可以解析HTTP协议,收到请求后可以进行响应,比如响应静态资源、进行页面跳转等 Web服务器响应可委托给CGI脚本、JSP脚本、ASP脚本、服务器端JS等程序或其它服务器端技术 Web服务器通常产生一个html响应以便浏览器浏览 2.常见Web服务器 We…