QT5知识点记录梳理(一)
来源:互联网 发布:经典网络歌曲 编辑:程序博客网 时间:2024/05/22 07:53
一、安装配置阶段注意点
概要:KK用的QT版本为5.3.2-windows-x86-msvc2013-64-opengl,由于用习惯了visual studio IDE。所以安装了的VS2013 addin 1.2.3
1)新建项目时候注意项目编译位数选择x64,项目链接器中目标计算机选择x64位计算机
2)设置好后,注意在选定main.cpp的时候进入QT5->QT object settings选择版本环境
3)脱机执行生成的exe文件时候记住放入对应的动态链接库(开发者可以在QT5安装目录设置环境变量)
二、通过connect函数理解信号槽
1)connect函数的理解
connect(sender, signal, receiver, slot,type);
sender:发出信号的对象
signal:发出的信号
receiver:接收信号的对象
slot:该对象接收到信号后的操作(执行的函数)
type:连接种类模式选择(暂时不理睬)
2)connect函数的定义,以及重载的五个构造方法
QMetaObject::Connection connect(const QObject *, const char *, const QObject *, const char *, Qt::ConnectionType);//传递信号为字符串QMetaObject::Connection connect(const QObject *, const QMetaMethod &, const QObject *, const QMetaMethod &, Qt::ConnectionType);//传递信号为QMetaMethod的引用(QMetaMethod为方法函数的基类)QMetaObject::Connection connect(const QObject *, const char *, const char *, Qt::ConnectionType);//缺少了接收信号的对象,表示自己给自己发信号(接收对象为this指针)QMetaObject::Connection connect(const QObject *, PointerToMemberFunction, const QObject *, PointerToMemberFunction, Qt::ConnectionType);//信号为指向成员函数的指针QMetaObject::Connection connect(const QObject *, PointerToMemberFunction, Functor);//Funtor类型,代表一些static函数,全局函数,Lambda表达式
现在结合例子:main.cpp
#include "test.h"#include <QtWidgets/QApplication>#include<qpushbutton.h>#include<qfont.h>#include<qapplication.h>int main(int argc, char *argv[]){ QApplication app(argc, argv); QPushButton bye("Good Bye"); bye.setGeometry(200, 70, 150, 90);//button的尺寸(非必须) bye.setFont(QFont("Time", 18, QFont::Bold));//button字体(非必需) QObject::connect(&bye, &QPushButton::clicked, &QApplication::quit); bye.show(); return app.exec();}
结果:
例子中connect函数的参数(第五种重载)分别为:
&bye //发出信号的对象为pPushButton的实例bye
&QPushButton::clicked //发出的信号为点击
&QApplication::quit //执行了QApplication的static函数quit(),退出程序。
3)对于信号槽的理解
信号槽,实际就是观察者模式。事件发生后,比如按钮检测到自己被点击了一下,它就会发出一个信号signal。这种发出类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,用自己的一个函数(成为槽(slot))来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。这就类似观察者模式:当发生了感兴趣的事件,某一个操作就会被自动触发。
4)过气的QT4
QT4的connect函数定义与重载:
bool connect(const QObject *, const char *, const QObject *, const char *, Qt::ConnectionType);bool connect(const QObject *, const QMetaMethod &, const QObject *, const QMetaMethod &, Qt::ConnectionType);bool connect(const QObject *, const char *, const char *, Qt::ConnectionType) const
除了返回值,Qt 4 的connect()函数与 Qt 5 最大的区别在于,Qt 4 的 signal 和 slot 只有const char *这么一种形式。
实际的用法为
#include <QApplication>#include <QPushButton>int main(int argc, char *argv[]){ QApplication app(argc, argv); QPushButton button("Quit"); QObject::connect(&button, SIGNAL(clicked()), &app, SLOT(quit())); button.show(); return app.exec();}
QT4的connect函数使用了SIGNAL和SLOT这两个宏,将两个函数名转换成了字符串,了解就行
- QT5知识点记录梳理(一)
- QT5知识点记录梳理(二)
- QT5知识点记录梳理(三)动作
- Java知识点梳理(一)
- 计算机组成原理知识点梳理(一)
- Win32 线程知识点梳理一
- TableView知识点梳理__一
- 程序员面试宝典随笔记(一)----计算机网络知识点梳理
- Android应用开发知识点总结梳理(一)
- 高一寒假竞赛知识点梳理1
- Java知识点梳理(二)
- 记录知识点与技巧(一)
- 小知识点总结记录(一)
- Mysql知识点记录一
- Spring梳理(一)
- 梳理(一)
- Unity3D学习之(NGUI知识点梳理)
- Java知识点梳理系列(序)
- ReactNative判断网络状态
- HDOJ 2571 命运(动态规划)
- 元素的介绍
- Xutils的使用和listview的显示网络数据
- Android开发常用网址
- QT5知识点记录梳理(一)
- hdu 3635(并查集的应用)
- openresty招聘
- Java的反射机制
- 融云发布公告:五大高级功能将全面开放
- windows配置thrift开发环境
- 用C代码写贪吃蛇游戏--打印食物
- 数据库新增同时获得自增字段数据
- ueditor单独调用图片上传