Qt on_pushButton_clicked()的用法【worldsing笔记】
在Qt里按钮控件默认对应一个on_pushButton_clicked()成员,如果想用点击信号,在代码中实现on_pushButton_clicked()成员即可。
最近看了一段代码,里面并没有connect函数,只定义了pushbutton,也没有看到调用on_pushButton_clicked()的语句,那么难道说只要点了button,就会自动调用on_pushButton_clicked()的内容吗?
这种写法是QtCreator默认的,也就是它背后帮你完成了connect。
比如对象obj有信号A,你只需要在同一个类中完成如下形式的函数即可
on_obj_a()。
编译时QtCreator就会自动在背后处理,效果就是对象obj的信号a被连接到这个函数。
推荐还是不这样做,这样做影响阅读。等多起来时自己也看不明白。也许不应该说是QtCreator的帮助,应该是moc的帮助恰当点。
Qt Meta Object Compiler会读取*.h文件 生成 moc_*.cpp文件,你说的没有看到调用on_pushButton_clicked()的语句,
是因为调用此语句的方法刚好就存在于上面的moc_*.cpp文件里,qmake生成的makefile里会指定源代码:
***************************************Makefile*******************
SOURCES = *.cpp \
main.cpp moc_*.cpp
******************************************************************
moc_*cpp文件与*.cpp文件在同一目录下。
那种格式的不需要专门去connect,
用的是另外一个函数,在ui_mainwindow.h这个文件中,
名字叫connectSlotsByName
详细说明:
void QMetaObject::connectSlotsByName ( QObject * object ) [static]
Searches recursively for all child objects of the given object, and connects matching signals from them to slots of object that follow the following form:
void on_<object name>_<signal name>(<signal parameters>);
Let's assume our object has a child object of type QPushButton with the object name button1. The slot to catch the button's clicked() signal would be:
void on_button1_clicked();
QMetaObject::connectSlotsByName(MainWindow);
另外需要说明的是如果在此基础上再加入手动的connect的话将会响应两按钮的点击效果,或是直接不应该。
Qt的增加信号与槽之间的连接方法有:手动编写conncet代码和Ui连接
Qt的对像之间通信中信号和槽比较常用,其它的通信方法还有postEvent
所以用法是:
1、在UI文件里加入按钮,objectName 设置为pushButtonA
2、在引用的头文件(比如MainWindow.h)里加入按钮曹的声明:
public slots:
void on_pushButtonConnect_clicked();
3、在调用处使用,(比如MainWindow.cpp)。
void MainWindow::on_pushButtonConnect_clicked()
{
qDebug("pushButtonConnect");
}
Qt on_pushButton_clicked()的用法【worldsing笔记】的更多相关文章
- Qt 固定窗口【worldsing 笔记】
w.setWindowFlags(Qt::WindowMinimizeButtonHint); //禁止最大化按钮 w.setFixedSize(1024,587);//固定窗口大小
- Qt Creator 源码学习笔记03,大型项目如何管理工程
阅读本文大概需要 6 分钟 一个项目随着功能开发越来越多,项目必然越来越大,工程管理成本也越来越高,后期维护成本更高.如何更好的组织管理工程,是非常重要的 今天我们来学习下 Qt Creator 是如 ...
- Qt Creator 源码学习笔记04,多插件实现原理分析
阅读本文大概需要 8 分钟 插件听上去很高大上,实际上就是一个个动态库,动态库在不同平台下后缀名不一样,比如在 Windows下以.dll结尾,Linux 下以.so结尾 开发插件其实就是开发一个动态 ...
- Qt 串口类QSerialPort 使用笔记
Qt 串口类QSerialPort 使用笔记 虽然现在大多数的家用PC机上已经不提供RS232接口了.但是由于RS232串口操作简单.通讯可靠,在工业领域中仍然有大量的应用.Qt以前的版本中,没有提供 ...
- RS485连接CAN——应急用法【worldsing笔记】【待完善】
阅读前提:假设读者对CAN总线和485总线有一定了解. RX485连接CAN用法提出背景: 在一般情况下只能是CAN对CAN 485对485, 但是在调试过程中难免对出现设备没有CAN接口,或是没有4 ...
- Qt Creator 源码学习笔记02,认识框架结构
阅读本文大概需要 6 分钟 在上一篇大概了解了关于Qt Creator 基础知识后[1],本篇先学习下框架基本结构,这样能够清晰的知道这个框架当中包含哪些文件.文件夹.工程文件,这些文件分别代表什么意 ...
- Qt开发中的实用笔记一--xml,Qpainter,Delegate:
因为开发环境不能联网,开发中用到有用的知识就记在word稳定中,不知不觉就记载了几十页,为避免笔记丢失,现在就一点点忘博客上搬,方便日后回顾! ---------------------------- ...
- Qt快速上手(学习笔记四)
拖了大半年,今天终于有更新了...我自己都不好意思,最近太忙了! 今天讲一下:QML语法 一 概述 QML是一种专门用于构建用户界面的编程语言,它允许用户构建高性能,具有流畅特效的可视化应用程序,QM ...
- Qt+腾讯IM开发笔记(一):腾讯IM介绍、使用和Qt集成腾讯IM-SDK的工程模板Demo
前言 开发一个支持全国的IM聊天,可以有基本的功能,发送文本.图片.文件等等相关内容. 腾讯IM产品 概述 腾讯即时通信IM是腾讯推出的即时聊天程序,当前时间为2020年3月(腾讯IM的优 ...
随机推荐
- JavaScript 三种创建对象的方法
JavaScript中对象的创建有以下几种方式: (1)使用内置对象 (2)使用JSON符号 (3)自定义对象构造 一.使用内置对象 JavaScript可用的内置对象可分为两种: 1,JavaScr ...
- SaaS系列介绍之一: SaaS的前身ASP介绍
1. 引言 未来将越来越不可预测,这是新经济最具挑战性的方面之一.商务和技术上的瞬息万变会产生变化,这既可以看作要防范的威胁,也可以看作应该欢迎的机遇. ...
- SaaS系列介绍之八: SaaS的运营模式
1 引言 软件的核心是它为用户解决领域相关问题的能力. ________Eric Evans,<领域驱动设计> 传统的软件生命周期中,软件的维护占整个过程的70 ...
- jquery.dataTables插件使用例子详解
DataTables是一个jQuery的表格插件.这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格 效果图 代码 <!doctype html> & ...
- mybatis怎样配置数据库集群
场景:一个读数据源一个读写数据源. 原理:借助spring的[org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource] ...
- Qt之自定义控件(开关按钮)Qt之模拟时钟
http://blog.csdn.net/u011012932/article/details/52164289 http://blog.csdn.net/u011012932/article/det ...
- 不要在头文件中使用 using namespace std;
不要在头文件中使用(using namespace std;). 若你使用了using namespace std;,在某一头文件中,那么包含这些头文件的文件就失去了"namespace ...
- (转)CAP理论十二年回顾:"规则"变了
编者按:由InfoQ主办的全球架构师峰会将于2012年8月10日-12日在深圳举行,为了更好地诠释架构的意义.方法和实践,InfoQ中文站近期会集中发布一批与架构相关的文章,本篇即为其中之一.Info ...
- 【POJ】3294 Life Forms
后缀数组. /* 3294 */ #include <iostream> #include <sstream> #include <string> #include ...
- storm - 基础概念整理
理论 Hadoop的出现虽然为大数据计算提供了一条捷径,但其仍然存在自身难以克服的缺点:实时性不足.Hadoop的一轮计算的启动需要较长时间,因此其满足不了对实时性有较高要求的场景. Storm由此应 ...