资源简介
Qt 之QToolButton 实现QQ界面按钮效果、重新设置QToolButton菜单按钮区域的新功能。
代码片段和文件信息
#include “mytoolbutton.h“
#include yleOption>
#include
#include
#include
#include
#include
MyToolButton::MyToolButton(QWidget *parent QString strIcon)
: QToolButton(parent)
m_strIcon(strIcon)
{
initControl();
initMenu();
}
MyToolButton::~MyToolButton()
{
}
void MyToolButton::initControl()
{
this->setCheckable(true);
this->setPopupMode(QToolButton::MenuButtonPopup);
this->setFixedSize(QSize(45 34));
this->setstyleSheet(QString(“QToolButton\
{\
border-image: url(%1) 0 0 68 0;\
}\
QToolButton:hover\
{\
border-image: url(%1) 34 0 34 0;\
}\
QToolButton:pressedQToolButton:checked\
{\
border-image: url(%1) 68 0 0 0;\
}\
QToolButton::menu-arrow\
{\
border:none\
}\
QToolButton::menu-indicator{\
image: none;\
}\
QToolButton::menu-button\
{\
background-image:url(:/Resources/toolButton_arrow_tranparent.png);\
}\
QToolButton::menu-button:pressed\
{\
background-image:url(:/Resources/toolButton_arrow.png);\
}“).arg(m_strIcon));
connect(this SIGNAL(pressed()) this SLOT(onMousePress()));
connect(this SIGNAL(clicked()) this SLOT(onMouseClicked()));
connect(this SIGNAL(released()) this SLOT(onMouseRelease()));
connect(this SIGNAL(signalToolMenuClicked()) this SLOT(onToolMenuClicked()));
}
void MyToolButton::initMenu()
{
m_menu = new QMenu(this);
QAction* actionOne = m_menu->addAction(“one“);
QAction* actionTwo = m_menu->addAction(“two“);
}
void MyToolButton::enterEvent(QEvent *event)
{
if (this->isChecked())
{
showMenuArrow();
}
QToolButton::enterEvent(event);
}
void MyToolButton::leaveEvent(QEvent *event)
{
hideMenuArrow();
QToolButton::leaveEvent(event);
}
void MyToolButton::mousePressEvent(QMouseEvent *event)
{
QstyleOptionToolButton styleIOption;
initstyleOption(&styleIOption);
if (Qt::LeftButton == event->button() && MenuButtonPopup == popupMode())
{
// 获取QToolButton右边菜单按钮的区域;
QRect popupButtonRect = style()->subControlRect(Qstyle::CC_ToolButton &styleIOption Qstyle::SC_ToolButtonMenu this);
if (popupButtonRect.isValid() && popupButtonRect.contains(event->pos()))
{
if (this->isChecked())
{
//m_menu->exec(event->globalPos());
emit signalToolMenuClicked();
}
}
}
qDebug() << “this is mousePressEvent Fuction“;
QToolButton::mousePressEvent(event);
}
void MyToolButton::mouseReleaseEvent(QMouseEvent *event)
{
qDebug() << “this is mouseReleaseEvent Fuction“;
QToolButton::mouseReleaseEvent(event);
}
void MyToolButton::nextCheckState()
{
// setChecked(!isChecked()); // nextCheckState方法 原来的实现
this->setChecked(true);
if (isChecked())
{
showMenuArrow();
// this->setMenu(m_menu);
}
else
{
hideMenuArrow();
// this->setMenu(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4200 2016-08-23 09:50 MyToolButton.cpp
文件 814 2016-08-23 09:51 MyToolButton.h
----------- --------- ---------- ----- ----
5014 2
相关资源
- Qt之实现录音播放及rawpcm转wav格式
- QT5.12.2/QT5.12.5 QWebEngineView Ubuntu下编译
- qt串口通信,实现发送和接收
- QT窗口界面模拟生产者消费者
- rtapi_w32.dll 库文件
- QT数字时钟,简单程序,适合练习
- Qt魔方还原lesson5-opencv识别颜色
- Qt魔方还原lesson4-魔方完全还原
- Qt 多线程使用 QTcpSocket及QTimer
- QT开发的视频采集并定时上传到服务器
- tiny4412上实现QT控制LED
- 简单的Shell编辑器Qt5
- 用qt写的学生成绩管理系统
- 用qt写的签到程序
- QT_GZIP整合后的源码
- QT5 QSerialPort 串口收发
- Qt拼图游戏源码
- QT之扫雷游戏
- QT的QTreeWidget有checkbox时轻松选中
- 制作含qt的图形文件系统完整过程
- DS18B20测温及QT界面实现
- 基于QT4的列车时刻表查询系统
- QT编写的串口设备调试工具终极版
- Qt编写守护进程
- qt写的一个动感界面
- qt5串口程序
- QT获取天气程序
- myElectronicDictionary.rar
- Delaunay三角剖分
- vicsek模型的Qt实现
评论
共有 条评论