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

山西常见网站建设推荐优化验证码平台网站开发

山西常见网站建设推荐优化,验证码平台网站开发,wordpress js效果,深圳网站开发专业团队两种方法的对比 方法1:sender() 优点:代码简洁,无需额外参数 缺点:依赖运行时类型转换,安全性较低 适用场景:简单场景,少量按钮 方法2:Lambda (推荐) 优点:安全直观&…

两种方法的对比

  • 方法1:sender()

优点:代码简洁,无需额外参数
缺点:依赖运行时类型转换,安全性较低
适用场景:简单场景,少量按钮

  • 方法2:Lambda (推荐)

优点:安全直观,直接传递标识
缺点:需要为每个按钮单独连接
适用场景:现代Qt项目,推荐首选(QT5以上才支持)

注意事项:

  • 线程安全
    • 若在多线程环境中使用 sender(),需确保发送者对象未被销毁。
  • 性能优化
    • 对高频点击按钮,避免在槽函数中执行耗时操作。
  • 代码维护
    • 使用枚举代替字符串标识(如 enum ButtonType { Prev, Next, … })可提高代码健壮性。

示例代码:

// widget.h

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void onButtonClicked();void handleButton(const QString &btnType); // 统一处理函数private:Ui::Widget *ui;
};
#endif // WIDGET_H

// widget.cpp

// widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 方法1:使用 sender() 函数识别信号源// 方法1.步骤1:统一连接按钮的 clicked 信号到槽connect(ui->btn1, &QPushButton::clicked, this, &Widget::onButtonClicked);connect(ui->btn2, &QPushButton::clicked, this, &Widget::onButtonClicked);connect(ui->btn3, &QPushButton::clicked, this, &Widget::onButtonClicked);// 方法2:Lambda 表达式传递按钮标识// 方法2:步骤1:连接信号时通过Lambda捕获按钮对象connect(ui->btn1, &QPushButton::clicked, [this]() { handleButton("prev"); });connect(ui->btn2, &QPushButton::clicked, [this]() { handleButton("next"); });connect(ui->btn3, &QPushButton::clicked, [this]() { handleButton("forecast"); });
}Widget::~Widget()
{delete ui;
}// 方法1:步骤2:在槽函数中通过 sender() 判断来源
void Widget::onButtonClicked()
{
#if 1QString objName = sender()->objectName();if (objName == "btn1") {qDebug() << "方法1-btn1被点击";} else if (objName == "btn2") {qDebug() << "方法1-btn2被点击";} else if (objName == "btn3") {qDebug() << "方法1-btn3被点击";}
#elseQPushButton *clickedButton = qobject_cast<QPushButton*>(sender());if (!clickedButton)return;// 根据按钮的 objectName 或指针地址区分if (clickedButton == ui->btn1) {qDebug() << "方法1-btn1被点击";} else if (clickedButton == ui->btn2) {qDebug() << "方法1-btn2被点击";} else if (clickedButton->objectName() == "btn3") {qDebug() << "方法1-btn3被点击";}
#endif
}
// 方法2:步骤2:统一处理函数
void Widget::handleButton(const QString &btnType)
{if (btnType == "prev") {qDebug() << "方法2-btn1被点击";} else if (btnType == "next") {qDebug() << "方法2-btn2被点击";} else if (btnType == "forecast") {qDebug() << "方法2-btn3被点击";}
}

现象:

在这里插入图片描述

http://www.dtcms.com/wzjs/787573.html

相关文章:

  • 大作设计网站官网下载湛江低价网站建设
  • 二手车为什么做网站中国企业100强
  • 国际机票网站建设seo咨询推广
  • 网站关键词怎么写wordpress 社交网站
  • 长沙县营销型网站建设选哪家网站建设免费建站免费源代码
  • 网站seo基本流程电子商务网站建设的参考文献
  • 法学院网站建设建议微网站的功能
  • seo网站怎么优化word免费素材大全
  • 湖州服装网站建设站长之家网页模板下载
  • 出售手表的网站有哪些公司做网站的法律依据
  • 百度云网站建设教程视频wordpress 功能 rss
  • 网站源码下载搭建我国宣布进入紧急状态了吗
  • 在线视频网站开发方案php企业文化经典句子
  • 网站死链接检查如何做一个网页卖东西
  • 中国建设银行东莞市网站wordpress木子
  • 建网站需要买些什么郑州网站优化_郑州网站推广_河南网站建设公司_seo外包顾问服务
  • icp对网站内容六安网站制作金狮
  • 企业网站建设效益分析wordpress网站反应慢
  • 建设网站模版微信小程序是干什么用的
  • 怎么查看网站点击量WordPress发送邮件按钮
  • 达人室内设计网站sem是指什么
  • 阜新网站设计如何做后端网站管理
  • 3g小说网站沭阳建设局网站
  • 温州网站运营汕头最新消息今天
  • eclipse 网站开发学习淘宝建站程序
  • 可以做一键拨号和导航的网站购物小程序制作
  • app免费制作软件中文版宁波seo费用
  • 安全生产标准化建设网站做网站做哪个好
  • 花卉物流园做网站的素材全球十大搜索引擎
  • 网站输入一级域名自动跳转二级域名全球互联网企业100强名单