1、什么是Qt以及为什么要使用Qt:
Qt​ 是使用C++语言封装的一套用于图形界面编程的框架,Qt专注但不局限于图形界面的开发,还支持系统调用、网络编程、数据库编程、2D/3D图形处理、音视频处理等。
​ 它可以跨平台,几乎支持所有的主流操作系统,Linux、Windwos、MacOS、Android、iOS等系统。
由于Qt基于C++,简单易用且具备优良的跨平台特性,在个人计算机、工控、嵌入式 的界面占主导地位。

二、Qt环境与工具
​ 1、头文件和库文件
​ 将Qt安装完成后,头文件的库文件会自动拷贝到以下路径中,方便为Qt应用程序提供运行支持。
​ 头文件路径:/usr/include/qt4/

​ 库文件路径:/usr/lib/i386-Linux-gnu/qt4/

​ 静态库可以下载Qt源码进行手动编译。

​ 2、创造器,它是Qt官方提供一集成开环境,是集代码编辑、项目构建、编译、调试、版本管理于一体的。
​ 3、设计器,以画图方式设计图形界面,所见即所得,但只是出现样子没有实际功能。
​ 4、界面编译器,负责把设计器画出的文件编译成C++代码。
​ 5、助手,qt的帮助手册,有各种的类说明,示例,还提供强大的查询功能。assistant命令打开

三、第一个Qt程序
​ 1、编辑代码,完成后保存退出
​ QApplication 负责管理应用的资源,同行接收命令行参数。
​ exec() 是应用程序的控制权交给Qt,使程序进入事件循环,等待用户的动作,如,鼠标单击,按下键盘等操作。
​ QLabel 标签控件负责显示一些内容
​ show() 控制默认情况下是隐藏,show成员函数负责把控件显到前台
​ resize() 设置控件的界面大小。
​ 2、构建项目,并生成项目文件
​ qmake -project -> xxx.pro文件
​ 3、生成编译脚本
​ qmake -> Makefile
​ 4、编译并运行
​ make
​ ./xxx

#include <QApplication>
#include <QLabel>

int main(int argc,char* argv[])
{
    QApplication app(argc,argv);
    QLabel lab("Hello Qt!");
    lab.show();
    lab.resize(800,600);
    return app.exec();
}
四、Qt创造器
​ 1、启动创造器:qtcreator
​ 2、创建项目:Qt控件项目->Qt GUI应用->项目路径->项目名称->选择界面类。
​ 注意:路径和项目名称尽量不要有中文。
​ 3、设计界面、编写代码、添加功能。
​ 4、构建项目并运行。

常用的快捷键:
    Alt+0 显示隐藏侧边栏
    Ctrl+/ 注释、取消注释
    Ctrl+I 自动调整代码格式
    Ctrl+Shift+R 批量修改变量名
    Ctrl+F 搜索、替换
    Ctrl+单击 跳转到定义位置
    Shift+F2 声明与定义之间切换
    Alt+Shift+u 转换成大写
    Alt+u 转换成小写
    F4 源文件与头文件之间切换
    F1 打开帮助手册
    Ctrl+B 编译运行
    Ctrl+B+S 保存所有文件再编译运行
    Ctrl+R 运行
    Ctrl+e松开后按0 关闭所有分割窗口
    Ctrl+e松开后按1 关闭当前分割窗口
    Ctrl+e松开后按2 水平分割窗口
    Ctrl+e松开后按3 垂直分割窗口
五、帮助手册
​ inherits:该类继承了哪些类

​ 1、Public Types: 访问权限是public的成员变量
​ 2、Properties:访问权限是private的成员变量,这种成员一般都有get/set函数
​ 3、Public Functions:访问权限是public的成员函数
​ 4、Static Public Members:访问权限是public的静态成员
​ 5、Public Slots:访问权限是public的槽函数
​ 6、Signals:信号,注意:它不是函数,可以通过 emit 发送,与槽函数建立联系。
​ 7、Reimplemented Protected Functions:一些虚函数,可以覆盖它们形成多太,可以被上层的代码自动调用,一般用它们实现对事件的处理。
​ 8、Detailed Description:对本类的详细说明、使用方法、调用时的上下文注意事项等。
公有成员函数:
  pos()   获取控件的位置
  x()     获取控件的横向位置
  y()     获取控件的竖向位置
  move()  设置控件的位置

size()    获取控件的大小
    resize()  设置控件的大小
    height()  获取控件的高度
    width()   获取控件的宽度
    
    setText() 设置控件显示文字
    text()    获取控件的文字
    
    show()    显示控件
    hide()    隐藏控件
 setStyleSheet() 设置控制的css样式
六、中文处理
​ 在Qt 4.8 默认使用的是utf-16的字符编码,windows系统默认的字符编码是GB系列,而Linux、MacOS默认使用的是utf-8的字符编码,如果直接使用中文在程序中就会出现乱码。

QTextCodec * QTextCodec::codecForName (const char * name) static
功能:创建字符编码类对象
name: "utf-8"

void QTextCodec::setCodecForLocale ( QTextCodec * c ) static
功能:设置本地系统使用的字符编码集

void QTextCodec::setCodecForCStrings ( QTextCodec * codec ) static
功能:设置程序中使用的QString的字符编码集

void QTextCodec::setCodecForTr ( QTextCodec * c ) static
功能:设置程序外部的字符编码集

固定的使用方法:
#include <QTextCodec>

QTextCodec* code = QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForTr(code);
QTextCodec::setCodecForLocale(code);
QTextCodec::setCodecForCStrings(code);
七、Qt中的字符串与输出
​ QString 具备string的所有功能
​ 字符串字面值可以直接转换成QString类型,从界面输入的数据也都是QString类型的
​ QString可以通过to系列函数转换成各种类型
C/C++语言中的scanf/printf/cin/cout可以继续使用,但Qt建议使用qDebug,因为它具备cin/cout/scanf/pritnf的功能。
1
八、信号和槽
​ 1、信号
​ Qt中的信号是模仿系统信息,对象与对象之间通信的一种方式。
​ Qt中的控件对象一旦发生什么变化就会发出信号通知其它对象。

2、槽函数
可以与信号绑定一种类成员函数,也可以当作普通的成员函数调用。

3、信号与槽函数的连接
bool QObject::connect(
    const QObject *asender, 信号发者对象地址
    const char *asignal, 发出的信号
        需要使用SIGNAL()宏把信号转换成字符
    const char *amember, 信号接收者对象地址
    const char *method 对象接收的槽函数
        需要使用SLOT()宏把槽函数转换成字符串
) const
connect(&sender,SIGNAL(clicked(void)),&recv,SLOT(close(void)));
注意:在写信号和槽函数时不需要手动编写,而尽量选择创造器的提示,原因是信号和槽一旦格式出错编译器无法发现。

九、窗口容器
​ 从Hello案例中可以看出,一个控件就是一个窗口,要想把多个控件放在一个窗口中,需要需要把这些控件束缚一个容器中,这种控件就叫窗口容器。
​ 1、QMainWindow
​ 主窗口容器,由标题栏、菜单栏、工具栏、状态栏以及中央显示区域组成。
2、QDialog
对话框容器,管理多个不同的交互控件。
3、QWidget
纯粹的容器,它是QMainWindow和QDialog的父类。
在创建控件时,把容器的地址作为参数给控件,这样控件就被放入容器中了。
4、界面设计的工作原理
    1、项目创建完成后会生成一个mainwindow.ui界面文件,双击该文件可以编辑界面。
    2、mainwindow.ui会自动生成一份ui_mainwindow.h头文件,该文件在创造器中看不到。
    3、在ui_mainwindow.h头文件中会自动生成Ui_MainWindow类,该类中会包含所有编辑的控件对象。
    4、在ui_mainwindow.h头文件中还会自动创建MainWindow类,并继承Ui_MainWindow类且被包含Ui名字空间中。
    5、mainwindow.h头文件中也会自动创建MainWindow类,该类中会有一个Ui::MainWindow* ui类型的成员,该对象会构造函数的初始化列表中被new创建。
    6、构造函数函数调用了ui->setupUi(this)成员函数,设置窗口容器以及控件的样式,通过ui可以访问所有界面文件中的控件。
十、设计师可以用来?
​ 1、设置窗口容器的界面大小
​ 2、拖拽一些需要的控件
​ 1、在对象查看器中设置控件的名字
​ 2、设置控件的大小位置
​ 3、使用方向键,Ctrl+方向键对控件位置进行微调
​ 4、使用Shift+方向键,Shift+Ctrl+方向键对控件的大小进行微调
​ 3、设置控件的字体、字号、特效。
​ 4、设置控件的水平对齐、垂直对齐
​ 5、设置控件是否启用
​ 6、使用uic命令可以把.ui文件生成头文件。

十一、简单的编程方式

由于是编程,所以把环境安装配置好,写出一hello world程序并能运行就可以扫平入门壁垒了。

到qt官网上下载集成bin/exe包或者简化的tar包

windows下面自不必说,动动鼠标就搞定了

Linux下面有点麻烦,需要先安装好libx11-6,libx11-dev, libxext6,libxext-dev.

然后更改bin包的属性,使其可以运行,使用

chmod u+x qt-x11-opensource-src-4.5.3.bin

运行以root权限[ubuntu下加sudo]

./qt-x11-opensources-src-4.5.3.bin

就可以进入图形界面了

而tar包先解压到一个目录下,比如 /tmp

cd /tmp

tar xvf qt-x11-opensources-src-4.5.3.tar.gz

进入源码目录

cd qt-x11-opensources-src-4.5.3

设置

./configure

如果出错的话需要安装libx11-6,libx11-dev, libxext6,libxext-dev.

编译安装

make

make install

删除源码目录

rm -rf qt-x11-opensources-src-4.5.3

一切没问题的话就可以进入helloworld的编写。

使用编辑器新建一个helloworld的cpp文件,可以使用emacs这个app。

改成emacs hello.cpp &

此刻输入源代码:

#include <QApplication>

#include <QLabel>

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

QLabel *label = new QLabel("Hello Qt!");

label->show();

return app.exec();

}

然后用qmake建立工程

qmake -project

注意,到此时工程是与平台无关的,可以移植到windows等系统上,

下一步根据当前平台创建配置文件

qmake hello.pro

然后make,

make

就生成可执行文件hello了

./hello

此时可以查看结果。

#end

063 使用Qt进行编程相关推荐

  1. QT开发(五十)——QT串口编程基础

    QT开发(五十)--QT串口编程基础 一.QtSerialPort简介 1.串口通信基础 目前使用最广泛的串口为DB9接口,适用于较近距离的通信.一般小于10米.DB9接口有9个针脚. 串口通信的主要 ...

  2. [Qt教程] 第31篇 网络(一)Qt网络编程简介

    [Qt教程] 第31篇 网络(一)Qt网络编程简介 楼主  发表于 2013-8-28 17:04:17 | 查看: 515| 回复: 0 Qt网络编程简介 版权声明 该文章原创于作者yafeilin ...

  3. CC++刚開始学习的人编程教程(9) Windows8.1安装VS2013并捆绑QT与编程助手

    我们在Windows8.1安装VS2013并捆绑QT与编程助手须要下列文件. 2. 在虚拟机中开启Windows8.1 3.然后选择VS2013的安装镜像. 4.将镜像拷贝到虚拟机. 5.我们装载这个 ...

  4. Qt网络编程之实例一GET方式

    看了两天的Qt网络编程,其实主要就是看了看QNetworkAccessManager.QNetworkRequest和QNetworkReply这三个类的主要内容.在之前,Qt网络编程主要是使用QHt ...

  5. c gui qt 4编程第二版_我的QT5学习之路(一)——浅谈QT的安装和配置

    一.前言 说到Qt,不能不说到C++,这门伟大的语言.因为其面向对象的编程思想和陡峭的学习曲线,一开始学习起来很是吃力.Qt从QT4开始基本封装了很多C++的工具库和界面库,而且支持跨平台,这是它最大 ...

  6. qt android 网络编程实例,QT网络编程Tcp下C/S架构的即时通信实例

    先写一个客户端,实现简单的,能加入聊天,以及加入服务器的界面. #ifndef TCPCLIENT_H #define TCPCLIENT_H #include #include #include # ...

  7. Qt网络编程——TCP

    Qt网络编程--TCP 1. 概念 2. 服务器 3. 客户端 4. TCP服务器和客户端互传文件 5. 资源下载 1. 概念 TCP(Transmission Control Protocol, 传 ...

  8. c gui qt 4编程第二版_一本专门学习PyQt5 GUI编程的书

    Python作为一个开源的解释型编程软件,在教学.科研.实际项目中用得越来越多.Python易学易用,程序资源丰富,在编程解决一些科学计算问题时比较实用,但是Python自带的Tkinter包设计GU ...

  9. Qt 5入门指南之Qt Quick编程示例

    Qt 5入门指南之Qt Quick编程示例 使用Qt创建应用程序是十分简单的.考虑到你的使用习惯,我们编写了两套教程来实现两个相似的应用程序,但是使用了 不同的方法.在开始之前,请确保你已经下载了Qt ...

最新文章

  1. 一个屌丝程序猿的人生(十九)
  2. Java中的DatagramPacket与DatagramSocket的初步
  3. js写的程序如何上线到linux,将 Node.js 应用发布到 Linux 应用服务 - Visual Studio | Microsoft Docs...
  4. 虚线 实现_redis跳跃表实现
  5. CF198D Cube Snake(三维空间/增量构造)
  6. C++函数概念解析(2)
  7. Wireshark 命令行捕获数据
  8. “约见”面试官系列之常见面试题之第七十五篇之vue中如何使当前css起作用(建议收藏)
  9. 在Qt 中如何使用OpenCV库
  10. 金橙子dll使用说明
  11. python 入门学习,52周存钱挑战
  12. 实对称矩阵的若干性质与详细证明
  13. 显卡、显卡驱动、cuda、cudnn 通俗解释及深度学习环境搭建
  14. 网络概念与常见问题全解析(网络面试题 学会这篇 基本都能答上来)
  15. Python软件编程等级考试二级——20220319
  16. 真香!用Python检测和识别车牌(附代码)
  17. 三七互娱2019秋招Java后端开发工程师
  18. C++笔记:输入输出、变量、变量加减乘除
  19. 计算机考证编程类证书
  20. 如何借助有道词典快速读英文文献

热门文章

  1. argc 和 argv
  2. 软件架构实践(第四版)
  3. 用PyQt5设计汽车仪表盘——三色环表盘(一)(坐标转换,QPainter画环,画多边形)
  4. 米线店结账程序 装饰着模式_海底捞推出三个子品牌 主打餐饮10元店模式
  5. 影视后期制作学习(AE)(动画在视频部分)
  6. android10如何省电,安卓手机如何省电 安卓手机省电方法【详细介绍】
  7. 五一放假不想人挤人?下载植物大战僵尸中文版玩起来
  8. 木子办公助手-升级至 v1.4.0了!
  9. 《木子办公助手 v1.3.2》
  10. windows无法打开chm帮助文件的问题