QtPushButton在hover时换图
作者:pingyuki | 来源:互联网 | 2023-05-19 14:28
现在要实现一个按钮中,左边是一个小图标,右边是文字。在鼠标移到按钮上时,换另外一个图标。小图标是使用icon加进去的。请问各位怎么有什么解决方案吗
我使用重载实现了你的功能,可以看一下http://blog.csdn.net/z609932088/article/details/53301297
主函数
#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"));
ui->pushButton->setStyleSheet("QPushButton:hover{QIcon(:/logo.ico);}");
}
重载。h
#ifndef M_PUSHBUTON_H
#define M_PUSHBUTON_H
#include
#include
class m_pushbuton : public QPushButton
{
public:
m_pushbuton(QWidget *parent);
void enterEvent(QEvent* event);
void leaveEvent(QEvent* event);
};
#endif // M_PUSHBUTON_H
重载。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"));
}
这里我写的比较简单了,你可以在重在函数中加个参数,来改变资源路径
不要光盯着图标看,把图标和字做在一张图片里,normal时设置普通时的图片,hover时设置另一张,这样在qss里只需设置背景图即可
qt5.3以后 QSS 完全支持 前面版本没去试过
[code=css
]QPushButton {
border:none;
background-image: url(:xxx.png);
background-repeat:no-repeat;
background-position: center;
}
QPushButton:hover {
background-image:url(:xxx.png);
}[/code]