Qt的环境与工具、信号与槽
一、Qt简介
上一篇博客有详细介绍 ~
二、Qt环境与工具
1、工具
- a、Qt助手:里面详细说明了Qt框架中的每一个类、函数、宏等,是开发的必备工具,在终端可以使用assistant打开
- b、构建器:负责把一个目录下的源码文件、头文件构建成一个Qt工程,并且自动生成Makefile文件
- c、Qt设计器:以画图的方式来进行设计界面,设计出的界面是没有功能的,如果需要完成相应的功能,还要与代码结合(界面文件可以转换成源码)
- d、Qt界面编译器:负责把.ui界面文件,生成对应的代码
- e、Qt创造器:(Qt creator集成开发环境:集合了编辑器、助手、构建器、设计器、编译器)
2、头文件和库
Qt框架的头文件存储在/usr/include/qt4,一般以Qt开头结尾无.h
Qt框架中的共享库存储在/usr/lib/qt4/imports目录中,,一帮以libQt开头
三、第一个Qt程序
1、编写源码
- a、创建目录,每个Qt工程都要有一个单独的目录
- b、编写入口
//创建应用程序对象
QApplication app(argc,argv);
//创建标签对象,此控件专门用来显示文字
QLabel lab("hello world");
//显示标签,几乎所有的控件默认都是隐藏的
lab.show();
//把程序的运算交给Qt(监控事件、等待用户操作)
return app.exec();
2、生成工程文件
qmake -project ->目录名.pro
3、生成Makefile文件
qmake ->makefile
4、编译
Qt程序在编译时语法检查非常严格,错误信息也很多
四、查阅Qt助手
- 1、打开Qt助手(assistant命令),使用索引、搜索找到对应的控件类、函数、宏。Inherits:有哪些父类
- 2、头文件,注意使用此控件时要包含什么头文件,一般情况下是类名
- 3、Properties:具有保护属性的成员变量
- 4、Public Functions:具有公开属性的成员函数,部分功能函数可能在父类中,当需要的成员函数找不到时,可以去父类中看看
- 5、Reimplemented Public Functions:可以重写的具有公有属性的成员函数
- 6、Public Slots:具有公开属性的槽函数,首先它是具有某些功能的成员,但它可以与信号绑定,不光可以被信号调用,也可以被直接调用
- 7、Signals:它们是以函数形式存在的,但它们并不实现出来,可以用emit显示的触发
- 8、Reimplemented Protected Functions:可以重写的具有保护属性的成员函数
- 9、Detailed Description:使用注意事项
- 10、其它:静态成员、静态成员函数、相关的宏
五、中文处理
1、不同的字符编码:由于历史原因、地区、国家、文化的不同,所使用的文字编码是不同的
英语国家:ASCII,128个字符,
中国大陆:GBK2312(windows下常用的字符编码,每个汉字2字节)
港台地区:BIG5
2、统一字符编码
国际标准化组织想设计出一套全世界通用的字符编码(Unicode)
版本:
UTF-2:双字节统一字符集
UTF-4:四字节统一字符集
UTF-8:用一到四字节表示一个Unicode字符
UTF-16:用二到四字节表示一个Unicode字符
UTF-32:用四字节表示一个Unicode字符
3、内外有别:
内部编码:
Qt应用程序中所有的控件默认使用的是UTF-16编码
外部编码:
操作系统所使用的编码(ubuntu默认使用的是UTF-8编码)
4、解决Qt乱码问题
Qt4.8默认的是UTF-16编码,因此必须手动设置后才能正确显示中文
Qt5.0之后默认的是UTF-8编码
5、在程序最开始设计内部编码
- Qt4.8:
QTextCodec codec = QTextCodec::codecForName("GBK");//情况1
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
或
QTextCodec codec = QTextCodec::codecForName("UTF-8");//情况2
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
+Qt5.0之后:
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
注意:当出现灵异错误时,可以把Qt所有生成的文件删除,再重新构建工程
六、信号与槽
信号:就是以函数形式存在的一种信号
槽:是一种特殊的函数,如果不配合信号,可以当作普通函数使用
信号和槽函数必须经常连接才能协同工作
connect(负责发送信号的对象指针)
信号函数签名:SIGNAL(函数名及参数)
接受信号的对象指针
槽函数的函数名签名:SLOT(函数名及参数)
七、自定义信号和槽
- 1、在自定义的类中定义信号和槽函数一定要单独写一个头文件
- 2、自定义的类必须要继承QObject类
- 3、在类的开头必须要有宏:Q_OBJECT
- 4、定义信号时前面要加关键字,信号以函数形式存在,但不需要实现
signals:
+5、定义槽函数时要加public slots:关键字,可以显示调用,也可以与信号连接,由信号触发调用 - 6、信号由关键字emit触发,可以带参数也可以不带参数
如果想让信号给槽函数发送数据,它们的参数格式必须一样
八、控件与容器
组成窗口界面的小工具:QLabel,QTextEdit,QPushButton
容器用来存放控件的类
QMainWindow:主窗口容器,由标题栏、菜单栏、工具栏、状态栏组成
转载于:https://www.cnblogs.com/qsz805611492/p/9602805.html
Qt的环境与工具、信号与槽相关推荐
- QT核心机制3:信号与槽
个人博客对应地址:QT核心机制3:信号与槽 写在前面 这篇文章基本是对Qt官方文档某些章节的翻译理解了,翻译这些章节的原因是我认为这些是Qt中最核心的东西,翻译的过程也就是强迫自己认真去读它们的过程, ...
- Qt 多线程中地信号与槽
Qt 多线程中地信号与槽 函数原型: 1 QObject::connect(const QObject *sender, const char *signal, const QObject *rece ...
- 最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_)
最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_) 一.08.qt中的坐标系 二,09 信号和槽-点击按钮关闭窗口_ 来自 一.08.qt中的坐标系 二,09 信号 ...
- Qt 控制台 使用connect连接信号和槽
导言: Qt的信号号和槽 (Signal&Slots)是Qt的特性,深入理解该机制是能够精通Qt编程的关键. 信号号和槽 (Signal&Slots)的作用: 信号和槽用于两个对象之间 ...
- Qt入门(3)——信号和槽
信号和槽用于对象间的通讯.信号/槽机制是Qt的一个中心特征并且也许是Qt与其它工具包的最不相同的部分. 在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件.更一般地,我们希 ...
- QT Creator应用程序开发——信号与槽
目录 一.QWidget基础窗口控件 二.信号与槽实例 三.信号与槽的补充知识 一.QWidget基础窗口控件 QWidget类是所有用户页面对象的基类,称为基础窗口控件,是一块矩形的页面可视区域,且 ...
- Qt工作笔记-Qt5新版信号与槽
运行截图如下: 格式如下: [static] QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemb ...
- qt connect函数_Qt Inside信号和槽之connect
上次和大家分享的是Qt信号和槽的一些宏定义以及元对象编译器.这次和大家分享信号和槽的connect函数到底连接了什么.还有元对象编译器都生成了什么代码. 很多讲Qt信号和槽的文章都会讲到元对象编译器生 ...
- Qt源码分析之信号和槽机制
Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的 说法,简单点说就是如何在一个类的一 ...
- Qt从入门到放弃——信号和槽机制(SigalSlot)
标题信号和槽概念 Qt提供了信号和槽机制用于完成界面操作的响应,信号和槽机制是完成任意两个Qt对象之 间的通信机制.其中,信号会在某个特定情况或动作下被触发,槽是等同于接收并处理信号的函数. 例如,窗 ...
最新文章
- ftp 文件完整性校验_FTP空间是什么?如何获取免费FTP空间吗?
- springboot mybatis plus 关闭驼峰式命名转换为下划线
- jquery-easyui环境的搭建及测试
- 《深入理解Java虚拟机》笔记4——类文件结构
- JAVA入门级教学之(内存地址的引用示例)
- 二维码提升对比度文献调研(1)--Fast Image Processing with Fully-Convolutional Networks
- 单一应用架构 垂直应用架构_如何说应用架构的语言
- 判断字符串中是否包含指定字符(JavaScript)
- Cloudera果然向云出手了!新机器学习服务采用云原生路径!
- kotlin_Kotlin阵列
- 自己都看到满眼问题,还要请专业测试?
- SpringBoot 集成 Caffeine、Redis实现双重缓存方式(二)
- SAP 下载EXCEL模板
- 腾讯手机管家(android2.3),腾讯手机管家3.4 Android发布_软件资讯软件快报-中关村在线...
- 管理员后台页面html代码,HTML5技术实现的管理员后台模板界面
- 计算机的网线连接路由器的什么接口,tp-link路由器网线插哪个口 tplink路由器网线连接图解...
- shel ---条件、循环
- 使用MindStudio进行MindX SDK财务票据OCR识别开发
- 《设计模式之禅》前言
- webrtc-audio-processing pulseaudio最新版本1.0交叉编译到ARM
热门文章
- java案例代码5--编码的方式--密码
- python随机数产生--random常用功能
- 将数据加载到datagridview_JVM系列(一)-- Java类的加载机制
- 网页设计如何排成一列_学习DIV+CSS网页布局之一列布局
- 7340怎么更换墨盒_打印显示墨盒托架被卡住怎么办?请按下边步骤正确解决
- Linux服务器时间设置命令
- Python爬虫入门教程 42-100 爬取儿歌多多APP数据-手机APP爬虫部分
- surfer画世界频率分布图(等高线、地点标注)
- HOLOLENS的DEVICE POTAL连接和安装
- 设计模式的C++实现 2.工厂模式