Qt如何实现通用按钮地图效果
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"Qt如何实现通用按钮地图效果",在日常操作中,相信很多人在Qt如何实现通用按钮地图效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Qt如何实现通用按
千家信息网最后更新 2026年11月02日Qt如何实现通用按钮地图效果
这篇文章主要介绍"Qt如何实现通用按钮地图效果",在日常操作中,相信很多人在Qt如何实现通用按钮地图效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Qt如何实现通用按钮地图效果"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一、前言
主要功能:
可设置防区样式 圆形、警察、气泡、气泡2、消息、消息2
可设置防区状态 布防、撤防、报警、旁路、故障
可设置报警切换
可设置显示的防区号
可设置是否可鼠标拖动
二、代码思路
void ButtonDefence::paintEvent(QPaintEvent *){ double width = this->width(); double height = this->height(); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); //绘制背景图 QImage img(imgName); if (!img.isNull()) { img = img.scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); painter.drawImage(0, 0, img); } //计算字体 QFont font; font.setPixelSize(height * 0.37); font.setBold(true); //自动计算文字绘制区域,绘制防区号 QRectF rect = this->rect(); if (buttonStyle == ButtonStyle_Police) { double y = (30 * height / 60); rect = QRectF(0, y, width, height - y); } else if (buttonStyle == ButtonStyle_Bubble) { double y = (8 * height / 60); rect = QRectF(0, 0, width, height - y); } else if (buttonStyle == ButtonStyle_Bubble2) { double y = (13 * height / 60); rect = QRectF(0, 0, width, height - y); font.setPixelSize(width * 0.33); } else if (buttonStyle == ButtonStyle_Msg) { double y = (17 * height / 60); rect = QRectF(0, 0, width, height - y); } else if (buttonStyle == ButtonStyle_Msg2) { double y = (17 * height / 60); rect = QRectF(0, 0, width, height - y); } //绘制文字标识 painter.setFont(font); painter.setPen(Qt::white); painter.drawText(rect, Qt::AlignCenter, text);}bool ButtonDefence::eventFilter(QObject *watched, QEvent *event){ if (canMove) { static QPoint lastPoint; static bool isPressed = false; if (event->type() == QEvent::MouseButtonPress) { QMouseEvent *e = static_cast(event); if (this->rect().contains(e->pos()) && (e->button() == Qt::LeftButton)) { lastPoint = e->pos(); isPressed = true; } } else if (event->type() == QEvent::MouseMove && isPressed) { QMouseEvent *e = static_cast(event); int dx = e->pos().x() - lastPoint.x(); int dy = e->pos().y() - lastPoint.y(); this->move(this->x() + dx, this->y() + dy); return true; } else if (event->type() == QEvent::MouseButtonRelease && isPressed) { isPressed = false; } } if (event->type() == QEvent::MouseButtonPress) { emit clicked(); } else if (event->type() == QEvent::MouseButtonDblClick) { emit doubleClicked(); } return QWidget::eventFilter(watched, event);} 三、效果图
到此,关于"Qt如何实现通用按钮地图效果"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
效果
可设
地图
按钮
学习
区号
文字
更多
气泡
消息
防区
帮助
报警
实用
接下来
代码
前言
功能
区域
圆形
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技工作委员会主任
互联网科技有限公司经营范围
致聘互联网科技
互联网养老 桔豆科技
左右互联网络科技
互联网公司会议桌创意科技软装饰
互联网 科技馆
互联网校园科技培训
互联网5g黑科技有哪些
未来五年的互联网科技
明优互联网科技有限公司
互联网与数字科技关系
广州有谷有贝互联网科技有限公司
昆明中奇联合互联网科技
科技互联网行业投资研究
云南互联网科技学费
同城互联网络科技
现代互联网科技公司
六子台科技互联网展会
科技发展第三阶段互联网时代
伟宏互联网科技
北京互联网科技有限公司
奇酷互联网科技公司
左右互联网络科技
科技大学互联网专业好不好
互联网科技公司有风险吗
互联网科技年终奖
张家口科技产业互联网平台
承德科技产业互联网平台
小牛互联网科技有限公司地址