Qt Qpushbutton美化问题

简介: 昨天在论坛看到一个网友的提问

如下

image.png

我想到的第一个就是可能需要重载Pushbutton,不过看到有网友回复可以使用stykesheet解决,今天尝试了一下,还是没有成功,

 

一下是我使用车重载的Pushbutton的方式实现

 

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->pushButton->setIcon(QIcon(":/picture.ico"));
}
MainWindow::~MainWindow()
{
    delete ui;
}

主函数,我默认上来线给按钮设置一个icon文件的图标

 

运行如下图所示

image.png

这个时候,我将按钮提升为我自己写的按钮

m_pushbuton.h

 

#ifndef M_PUSHBUTON_H
#define M_PUSHBUTON_H
#include <QPushButton>
#include <QEvent>
class m_pushbuton : public QPushButton
{
public:
    m_pushbuton(QWidget *parent);
    void enterEvent(QEvent* event);
    void leaveEvent(QEvent* event);
};
#endif // M_PUSHBUTON_H

m_pushbuton.cpp

#include "m_pushbuton.h"
m_pushbuton::m_pushbuton(QWidget *parent): QPushButton(parent)
{
}
void m_pushbuton::enterEvent(QEvent *event)
{
    this->setIcon(QIcon(":/logo.ico"));
}
void m_pushbuton::leaveEvent(QEvent *event)
{
    this->setIcon(QIcon(":/picture.ico"));
}

这样就可以实现网友的功能了,不过这个有个问题就是,以我现在的方式,没一个按钮都需要一个重载函数,这里可以在后面在增加一个参数,把Icon的路径传入,就可以实现多个按钮的功能实现了

 

运行截图

image.png

使用样式表的方式还没有弄出来,有弄出来的小伙伴们可以指导我一下

ui->pushButton->setStyleSheet("QPushButton:hover:QIcon(:/logo.ico)");

使用这个语句Qt总是提示我语法错误,

ui->pushButton->setStyleSheet("QPushButton:hover{QIcon(:/logo.ico);}");

这样的也是错误,实在是不知道样式表怎么写

 

感谢下面这位大神的博客指导

参考http://blog.csdn.net/u010519432/article/details/26758959

目录
相关文章
|
10月前
|
存储 前端开发 Cloud Native
C++Qt QSS要注意的坑
C++Qt QSS要注意的坑
|
27天前
【qt】自定义对话框(1)
【qt】自定义对话框(1)
10 0
|
27天前
【qt】自定义对话框(2)
【qt】自定义对话框(2)
13 0
Pyside6-第二篇-QPushButton一个普通按钮
Pyside6-第二篇-QPushButton一个普通按钮
233 0
|
10月前
|
存储 Cloud Native Linux
Qt QSlider样式
Qt QSlider样式
|
10月前
21 QT - QLabel控件使用
21 QT - QLabel控件使用
51 0
|
JavaScript
Qt图片浏览器
可以显示jpg、jpeg、png、bmp。可以从电脑上拖动图到窗口并显示出来或者打开文件选择 重载实现dragEnterEvent(拖拽)、dropEvent(拖拽放下)、resizeEvent(窗口大小改变)
96 0
Qt之QSS(QTreeView)
简述 QTreeView 作为一个树形控件,我们经常用到,只要对样式熟悉,可以做出特别漂亮的特效。 简述 自定义 QTreeView 指示器 整行拓展 自定义 QTreeView 交替行的背景色可以使用下面样式代码来定义: QTreeView { alternate-background-color: yellow; } 当鼠标划过
3881 0
|
C++
Qt界面优化:Qt去边框与窗体圆角化
Qt界面优化:Qt去边框与窗体圆角化
479 0
Qt界面优化:Qt去边框与窗体圆角化