QT之鼠标滑过按钮,按钮改变颜色,离开之后,按钮恢复原先颜色
Qt 恢复 改变 颜色 按钮 鼠标 之后 离开
2023-09-14 09:07:12 时间
1、重写按钮类MyButton
//myButton.h
#include<QPushButton>
#include<QEvent>
class MyButton :public QPushButton
{
Q_OBJECT;
public:
MyButton(QWidget *parent = 0);
~MyButton();
public:
void enterEvent(QEvent*);
void leaveEvent(QEvent*);
};
//myButton.cpp
#include"myButton.h"
MyButton::MyButton(QWidget* parent) :QPushButton(parent)
{
}
MyButton::~MyButton()
{
}
void MyButton::enterEvent(QEvent *)
{
setStyleSheet("QPushButton{background-color:rgb(255,255,0)}");
}
void MyButton::leaveEvent(QEvent *)
{
setStyleSheet("QPushButton{background-color:rgb(17,17,17)}");
}
2、在另一个类中添加#include"myButton.h",声明MyButton的指针对象MyButton *button1, *button2;
//analysis.h
#ifndef ANALYSIS_H
#define ANALYSIS_H
#include <QtWidgets/QWidget>
#include "ui_analysis.h"
#include"myButton.h"
#include<QPushButton>
#include<QToolButton>
#pragma execution_charactor_set("utf-8")
class Analysis : public QWidget
{
Q_OBJECT
public:
Analysis(QWidget *parent = 0);
~Analysis();
MyButton *button1, *button2;
QToolButton *toolButton;
bool flag = false;
QEvent *e;
private:
Ui::AnalysisClass ui;
public slots:
void chooseMenu();
void chooseBtn();
};
#endif // ANALYSIS_H
//analysis.cpp
#include "analysis.h"
#include<QEvent>
Analysis::Analysis(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
button1 = new MyButton(this);
button2 = new MyButton(this);
toolButton = new QToolButton(this);
QPixmap pixmap;
pixmap.load("images/arrow_view-analysis.png");
toolButton->setIcon(pixmap);
toolButton->setIconSize(pixmap.size());
toolButton->setText(QStringLiteral("请选择分类"));
toolButton->setGeometry(200, 100, 100, 40);
toolButton->setStyleSheet("border:1px groove gray;border-radius:3px;background-color:rgb(17,17,17);");
QPalette pal;
pal.setColor(QPalette::ButtonText, QColor(255, 255, 255));
toolButton->setPalette(pal);
button1->setText(QStringLiteral("支架"));
button1->setGeometry(200, 140, 100, 40);
button1->setStyleSheet("background-color:rgb(17,17,17);");
button1->setObjectName("btn1");
button1->setPalette(pal);
button2->setText(QStringLiteral("轮廓"));
button2->setGeometry(200, 180, 100, 40);
button2->setObjectName("btn2");
button2->setStyleSheet("background-color:rgb(17,17,17);");
button2->setPalette(pal);
button1->hide();
button2->hide();
connect(toolButton, SIGNAL(clicked()), this, SLOT(chooseMenu()));
connect(button1, SIGNAL(clicked()), this, SLOT(chooseBtn()));
connect(button2, SIGNAL(clicked()), this, SLOT(chooseBtn()));
}
Analysis::~Analysis()
{
}
void Analysis::chooseMenu()
{
if (!flag)
{
button1->show();
button2->show();
}
}
void Analysis::chooseBtn()
{
QPushButton *btn = qobject_cast<QPushButton*>(sender());
if ("btn1" == btn->objectName())
{
button1->hide();
button2->hide();
toolButton->setText(QStringLiteral("支架"));
}
if ("btn2" == btn->objectName())
{
button1->hide();
button2->hide();
toolButton->setText(QStringLiteral("轮廓"));
}
}
相关文章
- 【Qt】Qt的线程(两种QThread类的详细使用方式)「建议收藏」
- PyQt5可视化 7 饼图和柱状图实操案例 ①Qt项目的创建
- C/C++ Qt 监控文件状态变化
- QT软件开发-基于FFMPEG设计视频播放器-软解图像(一)
- Qt运行程序弹出异常窗口解释
- Linux系统使用Qt开发快速入门教程(linux下qt教程)
- Linux下Qt静态库编译与链接(linuxqt静态库)
- 建立Linux下QT动态库建立快速指南(linux下qt动态库)
- 如何在Linux系统中安装Qt开发环境(linux下qt安装教程)
- Linux串口应用开发实践——Qt篇(linux串口qt)
- 开发Linux程序,利用Qt软件实现虚拟键盘(linuxqt软键盘)
- 如何在Linux平台上配置Qt环境(linux下qt配置)
- Linux查看Qt版本:一个快速指南(linux查看qt版本)
- Linux下构建Qt程序步骤(linux打开qt)
- Linux下Qt跃动编程之旅(linux下qt串口编程)
- Linux上Qt的快速安装(linux下载qt)
- 开发Linux下 Qt开发:从入门到精通.(linux下的qt)
- 使用 Qt 连接 MySql (qt使用mysql)
- 轻松上手,Qt在Linux安装教程,让你快速掌握技巧!(qt在linux安装)
- 在Linux下探索Qt程序的奥秘(linux下运行qt程序)
- 崭新的体验——Qt在Linux的革新之旅(qtlinuxso)
- 入门Linux下Qt编程,掌握技巧!(linux下qt编程入门)
- 编程使用Qt快速实现SQLServer数据库编程(qt中sqlserver)
- MySQL驱动Qt开发:新开发者的进阶指南(mysql驱动 qt)