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

本文详细介绍了如何使用Qt的qss样式表来定制QPushButton等控件的样式,包括字体、背景、鼠标悬停和点击效果,以及如何放置图片并控制其位置。
摘要由CSDN通过智能技术生成

往期回顾

【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是一个跨平台的C++开发框架,非常适合用于GUI开发Qt提供了一套基于CSS(Cascading Style Sheets)的机制,可以用于自定义和美化Qt界面的控件样式。使用CSS可以将样式与功能分离,使得程序具有更好的可维护性和可扩展性。以下是使用Qt自定义控件并应用CSS的一些步骤: 1. 创建自定义控件 首先需要继承Qt的现有控件类,并添加自己的行为和属性。例如,可以创建一个自定义QPushButton,并添加一个新的属性用于设置背景颜色。 class MyButton : public QPushButton { Q_OBJECT Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor) public: explicit MyButton(QWidget *parent = nullptr); void setBackgroundColor(const QColor& color); QColor backgroundColor() const; private: QColor m_backgroundColor; }; 2. 应用CSS样式 在应用CSS之前,需要将控件的setObjectName()方法设置为一个独特的名称,以便CSS选择器可以找到它。然后,可以使用类似于HTML的CSS语法来设置样式,例如设置背景颜色和文本颜色。 QPushButton#myButton { background-color: green; color: white; } 3. 实现样式选择器 使用CSS的选择器是选择一些元素的方式,正如HTML中的选择器一样。在Qt中,可以使用setStyleSheet()方法来设置CSS样式。应用程序可以通过在QSS样式表中为定制控件实现一些自定义选择器,以实现更具体的样式。 QPushButton#myButton:hover { background-color: red; color: white; } 总之,通过继承Qt现有控件类并添加自己的属性和行为,然后使用CSS样式选择器和QSS样式表来自定义和美化Qt界面的控件样式。这种方法可以使界面更加美观和易于维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值