pyside6的QSpinBox自定义特性初步研究(二)

当前的需求是,蓝色背景的画面,需要一个相对应色系的QSpinBox部件。已有的部件风格是这样的,需要新的部件与之般配。

首先新建一个QDoubleSpinBox,并定义其背景色和边框:

QDoubleSpinBox {

color: white;

border:1px solid #2b4e8c;

border-radius:2px;

}

自定义字体和后缀单位:

然后,当前的显示效果是这样的:

很显然,需要对up和down的按钮做一个自定义。

样式表输入以下内容:

QDoubleSpinBox {

color: white;

border:1px solid #2b4e8c;

border-radius:2px;

}

QDoubleSpinBox::up-button{

/*向上按钮的默认特性*/

background-color:#36405f;

border:1px solid #2b4e8c;

border-radius:2px;

}

QDoubleSpinBox::down-button{

/*向下按钮的默认特性*/

background-color:#36405f;

border:1px solid #2b4e8c;

border-radius:2px;

}

QDoubleSpinBox::up-button:hover {

/*向上按钮鼠标悬停时的样式*/

background-color:#515d80;

border:1px solid #2b4e8c;

border-radius:2px;

}

QDoubleSpinBox::down-button:hover {

/*向下按钮鼠标悬停时的样式 */

background-color:#515d80;

border:1px solid #2b4e8c;

border-radius:2px;

}

QDoubleSpinBox::up-button:pressed{

/*向上按钮按下鼠标键时的样式 */

background-color:#515d80;

border:1px solid #039806;

border-radius:2px;

}

QDoubleSpinBox::down-button:pressed {

/* 按下鼠标键时的样式 */

background-color:#515d80;

border:1px solid #039806;

border-radius:2px;

}

运行效果 :

没错,up和down的按钮上的箭头没了。。。。。。。原因是重新定义按钮的时候没有定义图片。

新建两个图片,来重新自定义箭头图片,有两种方法:

方法1:使用QDoubleSpinBox::up-arrow{}和QDoubleSpinBox::down-arrow{}定义箭头图片

QDoubleSpinBox {

color: white;

border:1px solid #2b4e8c;

border-radius:2px;

}

QDoubleSpinBox::up-button{

/*向上按钮的默认特性*/

background-color:#36405f;

border:1px solid #2b4e8c;

border-radius:2px;

}

QDoubleSpinBox::down-button{

/*向下按钮的默认特性*/

background-color:#36405f;

border:1px solid #2b4e8c;

border-radius:2px;

}

QDoubleSpinBox::up-button:hover {

/*向上按钮鼠标悬停时的样式*/

background-color:#515d80;

border:1px solid #2b4e8c;

border-radius:2px;

}

QDoubleSpinBox::down-button:hover {

/*向下按钮鼠标悬停时的样式 */

background-color:#515d80;

border:1px solid #2b4e8c;

border-radius:2px;

}

QDoubleSpinBox::up-button:pressed{

/*向上按钮按下鼠标键时的样式 */

background-color:#515d80;

border:1px solid #039806;

border-radius:2px;

}

QDoubleSpinBox::down-button:pressed {

/* 按下鼠标键时的样式 */

background-color:#515d80;

border:1px solid #039806;

border-radius:2px;

}

QDoubleSpinBox::up-arrow{

/*向上箭头的图片*/

image: url(:/新前缀/Spinbox_up.png);

width:20px; /* 图片宽度*/

height:20px; /* 图片高度*/

}

QDoubleSpinBox::down-arrow{

/*向下箭头的图片*/

image: url(:/新前缀/Spinbox_down.png);

width: 20px; /* 图片宽度 */

height: 20px; /* 图片高度 */

}

运行效果:

这种方法的箭头图片尺寸是固定的不能随着部件尺寸自动缩放,即使把

width: 20px; /* 图片宽度 */

height: 20px; /* 图片高度 */

这两行去掉,不规定宽度和高度也不行。

效果如下图:

可以通过内置不同尺寸的图片实现尺寸的般配。

方法2:在up和down按钮的定义里直接指定图片。

QDoubleSpinBox {

color: white;

border:1px solid #2b4e8c;

border-radius:2px;

}

QDoubleSpinBox::up-button{

/*向上按钮的默认特性*/

background-color:#36405f;

border:1px solid #2b4e8c;

border-radius:2px;

image: url(:/新前缀/Spinbox_up.png);

}

QDoubleSpinBox::down-button{

/*向下按钮的默认特性*/

background-color:#36405f;

border:1px solid #2b4e8c;

border-radius:2px;

image: url(:/新前缀/Spinbox_down.png);

}

QDoubleSpinBox::up-button:hover {

/*向上按钮鼠标悬停时的样式*/

background-color:#515d80;

border:1px solid #2b4e8c;

border-radius:2px;

}

QDoubleSpinBox::down-button:hover {

/*向下按钮鼠标悬停时的样式 */

background-color:#515d80;

border:1px solid #2b4e8c;

border-radius:2px;

}

QDoubleSpinBox::up-button:pressed{

/*向上按钮按下鼠标键时的样式 */

background-color:#515d80;

border:1px solid #039806;

border-radius:2px;

}

QDoubleSpinBox::down-button:pressed {

/* 按下鼠标键时的样式 */

background-color:#515d80;

border:1px solid #039806;

border-radius:2px;

}

这种方法的箭头尺寸会随着部件尺寸自动缩小,不能放大,最大尺寸就是箭头图片的原始尺寸。如下图:

推荐第二种方法。

相关推荐
爱吃小白兔的猫2 分钟前
从零开始创建React项目及制作页面
前端·react.js·前端框架
小喵喵生气气16 分钟前
Python60日基础学习打卡D32
python·学习·算法
※DX3906※23 分钟前
小土堆pytorch--神经网路-卷积层&池化层
人工智能·pytorch·python
blues_C25 分钟前
五、【API 开发篇(下)】:使用 Django REST Framework构建测试用例模型的 CRUD API
python·django·测试用例·drf·测试平台
PWRJOY42 分钟前
Flask 路由装饰器:从 URL 到视图函数的优雅映射
后端·python·flask
患得患失9491 小时前
【Django】Django DRF 中如何手动调用分页器返回分页数据(APIView,action场景)
python·django·sqlite
steven~~~1 小时前
elementui初学1
前端·javascript·elementui
幽冥雪羽1 小时前
vue3中RouterView配合KeepAlive实现组件缓存
前端·vue.js·缓存
潇-xiao2 小时前
Qt enabled + geometry 属性(2)
c++·笔记·qt
m0_555762902 小时前
qt浏览文件支持惯性
开发语言·qt