首页 > 其他分享 >【QT入门】Qt自定义控件与样式设计之QPushButton常用qss

【QT入门】Qt自定义控件与样式设计之QPushButton常用qss

时间:2024-04-10 19:33:15浏览次数:20  
标签:控件 Qt 自定义 color QPushButton padding rgb background border

往期回顾

【QT入门】Qt自定义控件与样式设计之qss介绍(Qt style sheet)-CSDN博客

【QT入门】 Qt自定义控件与样式设计之qss选择器-CSDN博客

【QT入门】 Qt自定义控件与样式设计之QLineEdit的qss使用-CSDN博客

 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss

这里我们主要是实现几个常用的按钮样式,针对其中涉及的知识点进行分析讲解:

 

一、设置字体、背景以及鼠标按下,悬浮点击出现不同样式 

1、鼠标按下效果

在设置鼠标悬浮时的效果是,用了一个id选择器,这样就只对选中的那个按钮有效果

/*鼠标悬浮时的效果*/
QPushButton#btn2:hover
{
    color:#0000ff;
    background-color:rgb(100, 100, 20); /*改变背景色*/
    border-style:inset;/*改变边框风格*/
    padding-left:8px;
    padding-top:8px;
}

2、相关的状态扩充 

1、checked      button部件被选中
2、unchecked   button部件未被选中
3、disabled    部件被禁用
4、enabled      部件被启用
5、focus        部件获得焦点
6、hover       鼠标位于部件上
7、pressed      部件被鼠标按下
8、indeterminate    checkbox或radiobutton被部分选中
9、off              部件可以切换,且处于off状态
10、on              部件可以切换,且处于on状态

3、禁止使用的样式 

QPushButton:disabled
{
 color: blue;
 border-color: brown;
    background-color: #363636;
}

ui->pushButton->setEnabled(false); 

4、完整代码

QPushButton
{  
    /* 前景色, 文字的颜色 */  
    color:green;  
 
    /* 背景色 */  
    background-color:rgb(223,223,223);  
 
    /* 边框风格 */  
    border-style:outset;  
 
    /* 边框宽度 */  
    border-width:0.5px;  
 
    /* 边框颜色 */  
    border-color:rgb(10,45,110);  
 
    /* 边框倒角 */  
    border-radius:10px;  
 
    /* 字体 */  
    font:bold 22px;  
 
    /* 控件最小宽度 */  
    min-width:100px;  
 
    /* 控件最小高度 */  
    min-height:20px;  
 
    /* 内边距 */  
    padding:4px;  
} 
 
/* 鼠标按下时的效果 */ 
QPushButton#pushButton:pressed 
{  
    /* 改变背景色 */  
    background-color:rgb(40,85,20);  
 
    /* 改变边框风格 */  
    border-style:inset;  
 
    /* 使文字有一点移动 */  
    padding-left:6px;  
    padding-top:6px;  
}
 
/* 按钮样式 */ 
QPushButton:flat 
{  
    border:2px solid red;  
} 
 
/*鼠标悬浮时的效果*/
QPushButton:hover
{
    color:#0000ff;
    background-color:rgb(210, 205, 205); /*改变背景色*/
    border-style:inset;/*改变边框风格*/
    padding-left:8px;
    padding-top:8px;
}

二、放置一个图片,鼠标悬浮和点击时都会出现不同样式 

这个比较简单,就直接上代码了

QPushButton
{
 background-image:url(":/resources/user.png");
 background-position:center;
 background-repeat: no-repeat;
 border:none
}
 
QPushButton:hover
{
 background-color:rgb(10,210,210);
 background-image:url(":/resources/user_hover.png")
}
 
QPushButton:pressed
{
 background-color:rgb(10,210,210);
 background-image:url(":/resources/user.png");
 padding-left:8px;
    padding-top:8px;
}

三、实现按钮上图片和文字左右共存的效果

主要是实现按钮上图片和文字左右共存的效果,可以通过参数设置图片在左边还是在右边

3.1最终效果

实现这个还是简单,而且既可以通过代码实现,也可以通过样式表实现

3.2通过代码实现 

    ui->pushButton_3->resize(64,64);
    ui->pushButton_3->setText("会员");
    ui->pushButton_3->setIcon(QIcon(":/resources/vip_yes.png"));
    //可以设置图标的位置,在文字左边还是右边
    ui->pushButton_3->setLayoutDirection(Qt::LeftToRight);

    enum LayoutDirection {
        LeftToRight,
        RightToLeft,
        LayoutDirectionAuto
    }; 

这里的这个参数指的是图片的位置,默认情况下是图片在左边。

3.3通过样式表实现

 里面用到一个转义字符,注意一下。

ui->pushButton_4->setFixedSize(200, 64);
    ui->pushButton_4->setText(u8"非会员");
    QString btnStyle = "QPushButton{"
                       "background-image: url(:/resources/vip_no.png);"
                       "background-repeat: no-repeat;"
                       "background-origin: padding;"
                       "background-position: left;"
                       "padding-left:65px;"
                       "border: none;"
                       "background-color: rgb(0, 255, 255);"
                       "color:rgb(0, 0, 0);"
                       "text-align:left;"
                       "font: bold italic 30px \"Microsoft YaHei\";"
                       "}";

    ui->pushButton_4->setStyleSheet(btnStyle);

3.4实现图片和文字的上下共存

如果说想实现图片和文字的上下共存,也是两个方法。

3.4.1ToolButton

用ToolButton,这个可以直接实现

3.4.2QPushButton

QPushButton本身也是继承自QWidget,我们就可以把他看成是一个Widget,所以可以在按钮里放两个QLabel,一个在上面放图片,一个在下面放文字。最终实现我们想要的效果

ui->label->setPixmap(QPixmap(":/resources/vip_yes.png"));

 


以上,就是QPushButton常用的qss。

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

标签:控件,Qt,自定义,color,QPushButton,padding,rgb,background,border
From: https://blog.csdn.net/LF__plus/article/details/137517234

相关文章

  • 【QT入门】 Qt自定义控件与样式设计之QCheckBox qss实现按钮开关
    往期回顾【QT入门】Qt自定义控件与样式设计之QPushButton常用qss-CSDN博客【QT入门】Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框-CSDN博客【QT入门】Qt自定义控件与样式设计之QComboBox样式表介绍-CSDN博客 【QT入门】Qt自定义控件与样式设计之......
  • Qt使用Sqlite数据库-2
        上一篇文章介绍了sqlite数据库在Qt中基本使用方法(链接:Qt使用Sqlite数据库-1(入门级)-CSDN博客)。今天继续学习数据库常用的语法。1.删除数据库内容voiddeleteData(){QStringSql;//拼接sql语句Sql="DELETEFROMPerson_TableWHEREName='张......
  • 自定义Python实用函数-返回指定目录及其子目录和指定文件扩展名的文件清单列表
    importosdefget_files(file_path,image_types_set=()):"""返回指定目录及其子目录下、指定文件扩展名的文件清单列表。若image_types_set参数为空,则返回图片文件清单列表。若image_types_set参数为['.*'],则返回所有文件清单列表。"""filenames......
  • 发挥自定义表单开源优势,助力实现流程化办公!
    在数字化发展进程中,利用低代码技术平台、自定义表单开源的优势特点,可以让企业实现流程化办公,从而实现提质增效的办公目的。作为一种新兴的应用开发模式,低代码技术平台获得了很多新老客户朋友的青睐和喜爱,正以它自身的优势和特点为企业的发展强劲赋能。想要了解自定义表单开源优势......
  • 嵌入式开发之瑞芯微RK356x-Buildroot 添加自定义应用程序1
    上一篇我们说到具体如何去配置Buildroot,编译,验证本章我们需要添加自己的应用程序,我们就以helloworld为例子吧1.首先我们进入buildroot目录,并打开package/Config.in拉到最下面添加如下内容menu"NexyhoApp" source"package/Nexyho/Config.in"endmenu2.创建Nexyho文......
  • MQTT协议特点及数据包结构详解(值得珍藏)
    点击下载《MQTT协议特点及数据包结构详解(值得珍藏)》1.前言MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,用极少的代码和有......
  • ROS中自定义全局算法规划器(c++)
     ros中编写一个全局路径规划器并集成为ros插件,加载到turtlebot3机器人平台上仿真验证参考资料:ROS中自定义全局规划器(上)_算法部署_哔哩哔哩_bilibili官网教程:navigation/Tutorials/WritingAGlobalPathPlannerAsPlugininROS-ROSWiki1.建立工作空间mkdir-pjps_......
  • python收到MQTT消息后再发http请求
    python收MQTT消息和 发http请求的代码在前面的文章都有介绍,这里直接上完整的功能代码mqtt2http.py#python3.6importloggingimportrandomimporttimeimportrequests#frompaho.mqttimportclientasmqtt_clientimportpaho.mqtt.clientasmqttBROKER='......
  • 采用自定义注解 和 AOP 完成日志记录
    1、声明一个自定义注解@Retention注解包含一个RetentionPolicy类型的属性value,用于指定注解的保留策略,常用的保留策略包括:RetentionPolicy.SOURCE:表示注解仅在源代码中保留,编译器编译时会将其忽略,不会保存在编译后的字节码中。RetentionPolicy.CLASS:表示注解在编译后的......
  • python收到MQTT消息后写入mySQL
    python收MQTT消息和写mySQL的代码在前面的文章都有介绍,这里直接上完整的功能代码mqtt2mysql.py#python3.6importloggingimportrandomimporttimeimportmysql.connector#frompaho.mqttimportclientasmqtt_clientimportpaho.mqtt.clientasmqttBROKER......