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

VSQT 联编无转到槽选项--VS2019中使用QT建立信号和槽函数连接

问题

如题所述

解决方法

自己动手丰衣足食

//xxx.h
signals:
	xxx
private slots:
	xxx
//xxx.cpp

半自动化

用惯了转到槽函数肯定对此难以适应,觉得特别麻烦。其实我们有相对简洁的方法。

仅需要规范命名即可!

例如,我需要添加一个 pushButton 的点击事件:

// xxx.h
private slots:
	void on_pushButton_DigitalIO_clicked();
// xxx.cpp
void xxxx::on_pushButton_DigitalIO_clicked(){
	//...
}

发现该方法源于一次意外,自定义槽函数始终调用两次,而信号只发送了一次。最终发现是槽函数名问题。

于是我开始思考,我们点击转到槽,QT Creator 为我们做了什么?

先说结论,Qt Creator 会 帮我们生成特定格式命名的槽函数;编译时,根据命名规则在内部进行 connect

具体为:

  • 修改 ui文件 ,编译生成 ui_xxxx.h
  • ui_xxxx.h 中包含 setupUint( ) 函数,该函数末尾一定存在 QMetaObject::connectSlotsByName(HardwareControl)

让我们看就 Qt 官方文档的解释:
在这里插入图片描述
该函数会递归搜索给定对象的所有子对象,并将来自它们的匹配信号连接到遵循一定规则的对象槽。

按照该规则,我们只需要定义好以下槽函数即可,connect 就让 Qt 去完成吧~

void on_<object name>_<signal name>(<signal parameters>);

1、以按钮为例,首先添加一个按钮,对象名为pushButton,在按钮是右键单击选择“转到槽”即可,在转到槽选择面板(右图)里面选择需要进行的操作,比如单击clicked()

               

2、选择菜单“编辑”,找到Edit Signals/Slots,或者在工具栏中找到第二项(第二张图),然后拖动按钮并释放,

   

弹出“配置连接”选项,选择需要进行的操作即可。

3、自定义:以按钮为例,使用connect

在头文件中添加:

private slots:

void on_button1_clicked();

在.cpp文件下面的构造函数中添加:

connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_button1_clicked()));

接着实现槽函数即可。

4、不用写connect:

Qt信号和槽函数的命名是有规则的,组成为on_对象名_信号,以按钮为例,如果对象名为pushButton,在你在写槽函数的时候按照这种规则,则

在头文件中添加:

private slots:

void on_pushButton_clicked();

在.cpp文件下面的构造函数中就不用写connect了,直接写槽函数的实现就能实现信号和槽的连接。

 

 

 

 


http://www.kler.cn/a/4358.html

相关文章:

  • PHP中的魔术函数
  • 网络安全技术深度解析与实践案例
  • 具体场景的 MySQL 与 redis 数据一致性设计
  • 【物联网】ARM核介绍
  • 网络技术发展的演变与未来展望
  • django在线考试系统
  • Pytorch线性模型实现——up主:刘二大人《PyTorch深度学习实践》
  • Spring —— Spring简单的读取和存储对象Ⅰ
  • php使用yield处理大数据文件
  • Python中 join() 函数的使用方法
  • vue+springboot贫困山区儿童衣物捐赠网站系统
  • 基于Spring、Spring MVC、MyBatis的共享单车管理系统
  • Studio One没有声音怎么办 Studio One工程没有声音
  • Go底层原理:一起来唠唠GMP调度(一)
  • 【华为OD机试 2023最新 】 区块链文件转储系统(C++ 100%)
  • IO的类型(BIO、NIO、AIO)
  • GameFramework框架详解之 Config全局配置
  • Nacos配置中心优雅配置JSON数据格式
  • 第二类斯特林数
  • 多少个X 蓝桥杯模拟
  • dp-一和零
  • 『Linux从入门到精通』第 ⑧ 期 - 项目自动化构建工具——make/Makefile
  • 解决华为云鲲鹏arm架构运行IoTDB经常自动挂掉
  • 腾讯云短信接入发送短信 Java
  • CXL 2.0白皮书解读翻译:计算快速链路,相对于CXL 1.1的改进,有哪些提升和要求
  • 【索引失效如何排查】