资源简介
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 Creator5)
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- Qt软件开发 完整项目代码
- MQTT_3.1protocol_Specific中文版
- 在QT中使用RTP进行视频的采集和传输
- Mini6410 Qt4和Qtopia编程开发指南
- Qt实现Code39条形码
- qt_ffmpeg_mp4_export_and_import.zip
- QT5.5入门与项目实战
- Huffman Compress 霍夫曼编码 压缩 解压缩
评论
共有 条评论