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

网站导航页面模板免费h5在线制作

网站导航页面模板,免费h5在线制作,室内设计师的工作内容,网站开发人员 生活两种方法的对比 方法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/591959.html

相关文章:

  • 做图的赚钱的网站给公司做个网页要多少钱
  • 网站建设验收公众号排名优化
  • 做网站一般注册哪几类商标做纺织生意用什么网站好
  • wordpress引用图片样式广州网络推广seo
  • 江苏省建设教育协会网站首页长沙做引流推广的公司
  • 做网上购物网站上海百度移动关键词排名优化
  • 怎么做网络直播卖衣服的网站wordpress 用svn checkout
  • 网站模板制作教程特色的佛山网站建设
  • 毕设做网站需要准备网站上的报名表链接是怎么做的
  • django电影网站开发营销推广ppt模板
  • 重庆响应式网站建设哪家有商标设计网图大全
  • 常州网站建设企业网站制作果洛州商城网站建设
  • 正能量网站建设哪个网站可以做问卷调查
  • 用mockplus做网站原型wordpress首页文章显示分类
  • 蚌埠北京网站建设怎样建一个自己公司的网站
  • 河南 网站备案做网站费用 会计分录
  • 湛江哪家公司建网站最好做网站如何容易被百度抓取
  • 济南著名网站建设网站开发与设计
  • 自建网站优缺点信用网企业查询
  • ie网站建设wordpress 信息采集
  • 外贸多语言网站建设推广7一12岁手工玩具小制作
  • 企业网站建设可以分为几个层次iis搭建网站教程
  • 衡水做wap网站价格深圳做装修网站费用多少钱
  • 长春可做微网站的公司怎样用电脑做网站服务器
  • 做网站怎么做中国建设企业网站
  • 网站建设 调研报告wordpress如何设置网站地图
  • 北京网站假设新媒体营销岗位职责
  • 怎么做点击文字进入的网站江苏省住房建设厅网站
  • 全国二级建造师注册信息查询网站自己制作视频app软件
  • 易语言怎么用网站做背景音乐顺德网站建设策划