zoukankan      html  css  js  c++  java
  • 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:主窗口容器,由标题栏、菜单栏、工具栏、状态栏组成



  • 相关阅读:
    npm教程2
    02.RIP——CCNP学习笔记
    01.静态路由——CCNP学习笔记
    The 10th SWJTU ACM Online Tutorial
    visual studio 2005 常用按键
    Python垃圾回收机制
    私人网盘系统2.0—全部升级为layUI+PHP(持续更新中)
    Layui框架+PHP打造个人简易版网盘系统
    翻译app的开发全过程---编码+打包+上架
    值得认真学习的6 个 JavaScript 框架
  • 原文地址:https://www.cnblogs.com/qsz805611492/p/9602805.html
Copyright © 2011-2022 走看看