qtdesigner界面美化

本文介绍了如何使用QSS美化PyQt5界面,包括选择器介绍及应用实例,并讲解了如何利用自定义属性批量设置控件样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

pyqt5能快速构建界面,但是你会发现构建出来的界面没有像我们平常用的客户端界面一样美观。现在,就让我学习一下如何美化界面。本章代码使用qtdesigner页面布局中的代码继续学习


一、QSS

QSS和CSS类似,只不过QSS适用于qt界面设计,语法上跟CSS差不多,就是选择器上有所不同

1.1、QSS选择器介绍

下面列出常用QSS选择器及其用法

Selector示例说明
Universal Selector*星号匹配所有的界面元素
Type SelectorQPushButton选择所有 QPushButton类型 (包括其子类)
Class Selector.QPushButton选择所有 QPushButton类型 ,但是不包括其子类
ID SelectorQPushButton#okButton选择所有 对象名为 okButton 的QPushButton类型
Property SelectorQPushButton[flat=“false”]选择所有 flat 属性值为 false 的 QPushButton类型。
Descendant SelectorQDialog QPushButton选择所有 QDialog 内部 QPushButton类型
Child SelectorQDialog > QPushButton选择所有 QDialog 直接子节点 QPushButton类型

2.2、使用

例如做下面一个这样的界面
在这里插入图片描述
QSS代码是在styleSheet下编写设置,这里我在主窗口(Form类)下的styleSheet。
在这里插入图片描述
注意:如果一个元素的显示样式被多层指定了, 越靠近元素本身 的选择指定,优先级越高。(例如你在主窗体类里面指定了样式,有在控件本身指定了样式,那样式以自身指定的为准)

将用户名等文本设置成蓝色,因为他们都属于控件QLabel,QSS代码如下

QLabel{
	color: rgb(85, 0, 255);
	font-size: 20px;
}

将输入框设置成圆角,且选择的时候边框变成蓝色,因为他们都属于QLineEdit,QSS代码如下:

QLineEdit{
	height: 30px;
	border-radius: 15px;
	padding-left: 10px;
}
QLineEdit:focus{
	border: 1px solid  rgb(85, 0, 255);
}

按钮设置成白底蓝字,鼠标经过的时候变成蓝底白字,因为他们都属于QButton,QSS代码如下:

QPushButton{
	border: 1px solid rgb(85, 0, 255);
	background-color: rgb(255, 255, 255);
	color: rgb(85, 0, 255);
	height: 25px;
	font-weight: 700;
}

QPushButton:hover{
	border: none;
	background-color: rgb(85, 0, 255);
	color: rgb(255, 255, 255);
}

附上完整代码:

QPushButton{
	border: 1px solid rgb(85, 0, 255);
	background-color: rgb(255, 255, 255);
	color: rgb(85, 0, 255);
	height: 25px;
	font-weight: 700;
}

QPushButton:hover{
	border: none;
	background-color: rgb(85, 0, 255);
	color: rgb(255, 255, 255);
}
QLabel{
	color: rgb(85, 0, 255);
	font-size: 20px;
}
QLineEdit{
	height: 30px;
	border-radius: 15px;
	padding-left: 10px;
}
QLineEdit:focus{
	border: 1px solid  rgb(85, 0, 255);
}

二、自定义属性

在实际应用中,不会同一种控件都是同一个样式,相反,更多的情况是同一个控件会有不同的样式。
一种方法是到对应控件里面设置样式,但是这个方法不好的地方在于不能批量设置样式。
另一种方法是通过属性来对控件进行分组设置样式,虽然可以通过系统自带属性来区分不同控件,但是一般不推荐改,这时候自定义属性就派上了用场。

2.1、添加自定义属性

选择登录按钮,然后点击加号,这里选择添加字符串,添加一个名为"class"的自定义属性,设置值为"black"
在这里插入图片描述
然后在上面代码的基础上添加一行代码

QPushButton[class='black']{
	color: black;
}

你会发现字体颜色变黑了
在这里插入图片描述
大功告成,有什么问题欢迎在评论区留言。

### 如何在 Qt Designer 中设置和美化登录界面的背景 #### 使用样式表自定义控件外观 为了使登录界面更加美观,在Qt Designer中可以通过应用CSS样式的子集——样式表来定制控件的颜色、字体和其他属性。对于希望更改整个窗口或特定部件(如按钮)背景的情况,可以在Qt Designer内选定目标组件并编辑其`styleSheet`属性[^1]。 ```css QWidget { background-image: url(:/path/to/image.png); } ``` 上述代码展示了怎样利用样式表给QWidget指定一张图片作为背景。这里的路径应当替换为实际图像资源的位置;如果图像是项目的一部分,则应采用`:memory:`前缀加上相对路径表示法。 #### 去除默认边框与设定透明度 为了让应用程序看起来更为现代和平滑,有时会去除标准窗口装饰,并调整整体不透明程度。这通常涉及修改窗体类中的初始化部分: ```cpp // widget.cpp 文件内的构造函数里加入这两行配置 setWindowFlags(Qt::FramelessWindowHint | windowFlags()); setAttribute(Qt::WA_TranslucentBackground); ``` 这段C++代码片段实现了无边界且半透明的效果,适用于那些追求极简风格的应用场景[^2]。 #### 动态更新现有样式 当需要向已有的样式基础上添加新的规则而不完全覆盖旧有设置时,可以采取拼接字符串的方式构建复合样式声明。下面的例子说明了如何安全地增强home_button原有的样式而不会丢失先前定义的内容: ```python txt = self.home_button.styleSheet() + ''' QToolButton{ background-color: rgb(240, 240, 240); }''' self.home_button.setStyleSheet(txt) ``` 此Python脚本段落展示了一种方法,即通过获取当前存在的样式文本并与新定义相结合形成完整的样式描述符后再重新赋值回去[^3]。 综上所述,借助于Qt Designer的强大功能以及PyQt5所提供的灵活性,开发者能够轻松创建既实用又吸引人的图形用户界面
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值