zoukankan      html  css  js  c++  java
  • QT的初步学习笔记

    一、Qt简介
     1、Qt是什么:图形用户界面程序框架
      能做界面的还有什么:MFC、GTK+
     2、Qt的由来和发展
     3、为什么选择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
      此文件可以被Qt创造器打开。
     3、生成Makefile文件
      qmake -> Makefile
     4、编译
      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编码。
      外部编码:操作系统所使用的编码(ubntu默认使用的是UTF-8编码)。

     4、解决Qt乱码问题。
      Qt4.8默认的是UTF-16编码,因此必须手动设置后才能正确显示中文。
      Qt5.0之后默认的是UTF-8编码。

     5、在程序最开始时设置内部编码
     QTextCodec* code = QTextCodec::codecForName("ut    f-8");
     QTextCodec::setCodecForTr(code);
     QTextCodec::setCodecForLocale(code);
     QTextCodec::setCodecForCStrings(code);
     
     注意:当出现灵异错误时,可以把Qt所有生成的文件删除,再重新构建工程。
     
    五、信号与槽
     
     信号:就是以函数形式存在的一种信号。
     槽: 是一种特殊的函数,如果不配合信号,可以当作普通函数使用。
     信号和槽函数必须经常连接才能协同工作。
     connect(负责发送信号的对象指针
      信号函数签名:SIGNAL(函数名及参数)
      接收信号的对象指针:
      槽函数的函数名签名:SLOT(函数名及参数)
      )
     
    六、自定义信号和槽

     1、在自定义的类中定义信号和槽函数一定要单独写一个头文件。
     2、自定义的类必须要继承QObject类
     3、在类的开头必须要有宏:Q_OBJECT
     4、定义信号时要加关键字,信号以函数形式存在,但不需要实现。
      signals:
     5、定义槽函数时要加public slots:关键字,可以显示调用,也可以与信号连接,由信号触发调用。
     6、信号由关键字emit 触发,可以带参数也可以不带。
      如果想让信号给槽发送数据,它们的参数格式必须一样。
     
    七、控件与容器
     组成窗口界面的小工具叫控件,QLabel,QTextEdit,QPushButton。
     容器用来存放控件的类,
     QMainwindow:主窗口容器,由标题栏、菜单栏、工具栏、状态栏组成。
     练习:完成QQ的登录界面。
     用户名、密码使用,QLineEdit,setEchoMode
     
     
     
     
     
  • 相关阅读:
    面向对象编程总结Python
    垃圾收集器与内存分配策略
    自定义异常、异常处理注意点
    关于线程【一】——线程创建、停止、interrupted()和isInterrupted()区别
    Java内存区域
    HotSpot虚拟机对象
    异常——try、catch、finally、throw、throws
    关于线程【二】——线程同步和异步
    fillder代理调试
    新鲜出炉的Asp.Net MVC电子书
  • 原文地址:https://www.cnblogs.com/mingyoujizao/p/9547698.html
Copyright © 2011-2022 走看看