代码拉取完成,页面将自动刷新
同步操作将从 GreateCoder/Message_Center 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "btnmodel.h"
#include <QDebug>
#include <QDir>
#include <QSysInfo>
BtnModel::BtnModel(QWidget *parent) :
QPushButton(parent)
{
m_status = NORMAL;
m_mousePress = false;
}
/// 获取图标
void BtnModel::getIconPath(const QString& iconPath)
{
m_mapVec.append(QPixmap(iconPath + QString ("_normal")));
m_mapVec.append(QPixmap(iconPath + QString ("_hover")));
m_mapVec.append(QPixmap(iconPath + QString ("_press")));
this->setFixedSize(m_mapVec[0].size());//设置按钮与图片一样的大小
}
/// 滑入
void BtnModel::enterEvent(QEvent *)
{
m_status = HOVER;
update();
}
/// 滑出
void BtnModel::leaveEvent(QEvent *)
{
m_status = NORMAL;
update();
}
/// 点击
void BtnModel::mousePressEvent(QMouseEvent *event)
{
/// 若点击鼠标左键
if (event->button() == Qt::LeftButton)
{
m_mousePress = true;
m_status = PRESS;
update();
}
}
/// 点击后的放手
void BtnModel::mouseReleaseEvent(QMouseEvent *event)
{
/// 若点击鼠标左键响应
if (m_mousePress && this->rect().contains(event->pos()))
{
m_mousePress = false;
m_status = HOVER;
update();
emit clicked();
}
}
/// 显示效果
void BtnModel::paintEvent(QPaintEvent *)
{
QPainter painter (this);
QPixmap pixmap;
switch(m_status)
{
case NORMAL: /// 正常
{
pixmap = m_mapVec[0];
break;
}
case HOVER: /// 滑过
{
pixmap = m_mapVec[1];
break;
}
case PRESS: /// 点击
{
pixmap = m_mapVec[2];
break;
}
default:
pixmap = m_mapVec[0];
break;
}
/// 显示当前图标
painter.drawPixmap(rect(), pixmap);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。