当前位置: 首页 > wzjs >正文

网站模板如何使用 如何修改吗赚钱的软件

网站模板如何使用 如何修改吗,赚钱的软件,开发手机网站教程,推广费用一般多少通过事件过滤器拦截QRadioButton点击事件 一、事件过滤器完整实现 1. 核心代码扩展(含注释) bool MainWindow::eventFilter(QObject* obj, QEvent* ev) {// 拦截所有QRadioButton的鼠标事件(包括点击、释放、双击)if (ev->ty…

通过事件过滤器拦截QRadioButton点击事件


一、事件过滤器完整实现

1. 核心代码扩展(含注释)
bool MainWindow::eventFilter(QObject* obj, QEvent* ev) {// 拦截所有QRadioButton的鼠标事件(包括点击、释放、双击)if (ev->type() == QEvent::MouseButtonPress ||ev->type() == QEvent::MouseButtonRelease ||ev->type() == QEvent::MouseButtonDblClick) {QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(ev);if (mouseEvent == nullptr) return false; if (mouseEvent->button() == Qt::LeftButton) {auto radioBtn = qobject_cast<QRadioButton*>(obj);if (radioBtn == nullptr) return false;qDebug() << "拦截到" << radioBtn->objectName() << "的鼠标事件";// 弹出用户确认对话框if (QMessageBox::question(this, "确认", "是否允许切换选项?") == QMessageBox::Yes) {radioBtn->setChecked(true); // 直接设置选中状态return false; // 允许事件继续传递(确保视觉反馈)}else {return true; // 完全拦截事件}}}return QMainWindow::eventFilter(obj, ev); // 其他事件交给父类处理
}

二、完整使用流程

1. 安装事件过滤器

在窗口构造函数中为需要拦截的按钮安装过滤器:

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {ui.setupUi(this);// 为所有QRadioButton安装过滤器for (QRadioButton *btn : findChildren<QRadioButton*>()) {btn->installEventFilter(this);}
}
2. 信号处理补充

若需在用户确认后执行额外逻辑,可连接toggled信号:

connect(ui.radioButton_2, &QRadioButton::toggled, [](bool checked) {if (checked) qDebug() << "选项已确认切换";
});

三、性能优化

  • 减少类型转换:缓存qobject_cast结果。
  • 快速事件过滤:优先检查高频事件类型(如MouseButtonPress)。

四、对比方案分析

方案优点缺点适用场景
事件过滤器集中管理多个控件事件需手动维护过滤逻辑多控件统一拦截
重写鼠标事件控件专属逻辑需继承控件类自定义控件开发
信号阻塞简单直接影响所有信号临时禁用交互

五、完整示例代码

// MainWindow.h
#include <QMainWindow>
#include <QRadioButton>class MainWindow : public QMainWindow {Q_OBJECT
public:MainWindow(QWidget *parent = nullptr);
protected:bool eventFilter(QObject *obj, QEvent *ev) override;
private:Ui::MainWindow *ui;
};// MainWindow.cpp
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {ui->setupUi(this);ui->radioButton_1->setObjectName("optionA");ui->radioButton_2->setObjectName("optionB");// 批量安装过滤器QList<QRadioButton*> radios = findChildren<QRadioButton*>();for (auto btn : radios) btn->installEventFilter(this);
}bool MainWindow::eventFilter(QObject* obj, QEvent* ev) {// 拦截所有QRadioButton的鼠标事件(包括点击、释放、双击)if (ev->type() == QEvent::MouseButtonPress ||ev->type() == QEvent::MouseButtonRelease ||ev->type() == QEvent::MouseButtonDblClick) {QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(ev);if (mouseEvent == nullptr) return false; if (mouseEvent->button() == Qt::LeftButton) {auto radioBtn = qobject_cast<QRadioButton*>(obj);if (radioBtn == nullptr) return false;qDebug() << "拦截到" << radioBtn->objectName() << "的鼠标事件";// 弹出用户确认对话框if (QMessageBox::question(this, "确认", "是否允许切换选项?") == QMessageBox::Yes) {radioBtn->setChecked(true); // 直接设置选中状态return false; // 允许事件继续传递(确保视觉反馈)}else {return true; // 完全拦截事件}}}return QMainWindow::eventFilter(obj, ev); // 其他事件交给父类处理
}


文章转载自:

http://qcjwBqxD.pshpx.cn
http://U6uYv78X.pshpx.cn
http://JEw02Pql.pshpx.cn
http://ePSyIgKt.pshpx.cn
http://NwOcG8IE.pshpx.cn
http://87MtKi4n.pshpx.cn
http://ngcV9Pff.pshpx.cn
http://7CVK2UBo.pshpx.cn
http://ovasz2vt.pshpx.cn
http://jJtaBS3T.pshpx.cn
http://lpVNpvWE.pshpx.cn
http://7uedsL2W.pshpx.cn
http://y6UUiaJx.pshpx.cn
http://Iea68Z6a.pshpx.cn
http://jsXvuUZh.pshpx.cn
http://gv247GBY.pshpx.cn
http://9Oz1Uzry.pshpx.cn
http://NLAxcu6c.pshpx.cn
http://cNEyn40r.pshpx.cn
http://hOW3laAP.pshpx.cn
http://aWygxiqS.pshpx.cn
http://TnShdiYC.pshpx.cn
http://BknY5IU8.pshpx.cn
http://pNBZjev2.pshpx.cn
http://ngWTOSAL.pshpx.cn
http://fGkgcPnh.pshpx.cn
http://froKPAKW.pshpx.cn
http://asc5zBYY.pshpx.cn
http://X04SaLVe.pshpx.cn
http://3itG4ATd.pshpx.cn
http://www.dtcms.com/wzjs/682230.html

相关文章:

  • 住房和城乡建设网站南阳网站托管
  • 十大SEO网站外链建设误区个人站长怎么样做网站才不会很累
  • 知名营销类网站国家企业信用信息公示系统官网 2
  • 做水果网站弄个什么名字做外贸网站卖什么东西好
  • 网站建站建设首选上海黔文信息科技有限公司2wordpress相册代码
  • 恒佳企划网站建设qq免费申请账号
  • 哈尔滨网站建站模板wordpress默认页面
  • 智慧团建登录网站入口企业策划公司
  • 重庆制作网站怎么选中英切换的网站咋做
  • 建网站需要哪些步骤舞台灯光网站建设公司
  • 浙江省城乡建设厅网站首页百度网站推广费用
  • 网站建设捌金手指花总十六排名前50名免费的网站
  • 网站会员推广功能wordpress 4.5.4 漏洞
  • 地产公司网站建设方案wordpress wordcloud
  • 如何 建设一个网站广州白云网站建设公司
  • 网站打不开dns修改吗网站流量功能更怎么做
  • 都江堰网站开发js面向对象网站开发
  • 咚咚抢网站怎么做的html网页游戏制作
  • 佛山网站建设公司88网站建设营销制作设计
  • 关于1-6月网站建设工作通报模板网站修改教程视频
  • 本地网站搭建流程保定网站制作费用
  • 网站开发工程师有证书考试吗网页的开发流程
  • 大型网站建设哪里济南兴田德润实惠吗东莞广告公司东莞网站建设
  • 老外的网站怎么做小程序可做网站吗
  • 群晖做自己的电影网站哈尔滨网站如何制作
  • 新遵义长清区seo网络优化软件
  • c 做网站织梦技术网站模版
  • 沈阳网站设计价格深圳网站建设送域名
  • 类似百科式的网站建设深圳网站程序开发制作
  • 深圳外贸网站定制企业vi设计的基本要素