Qt入门基础知识(2)

pro文件

模块部分可以自己添加

SOURCES和HEADERS文件目录会自动生成

除非明白自己添加的是什么,否则不要修改pro文件内容

命名规范

类名:首字母大写,单词与单词之间首字母大写

函数名,变量名:首字母小写,单词与单词之间首字母大写

快捷键

  1. 运行 ctrl+r

  2. 编译 ctrl+b

  3. 整体移动 ctrl+shift+↑/↓

  4. 自动对齐 ctrl+i

  5. 帮助文档 F1

    或直接打开 Qt Assistant

  6. 同名.h和.cpp之间切换 F4

QPushButton

show方式是以顶层方式弹出窗口控件,所有创建一个Button要显示不是用的show方法

QPushButton *btn = new QPushButton;
btn->setParent(this);
btn->setText("第一个按钮");

QPushButton *btn2 = new QPushButton("第二个按钮",this);
btn2->resize(600,400); //不写这条则会按照窗口大小去创建Button
btn2->move(100,100); //移动位置,避免与btn覆盖
setWindowTitle("第一个窗口");

setFixSize(600,400);//设置固定窗口大小

按钮控件常用API

  1. 创建 QPushButton *btn = new QPushButton
  2. 设置父亲 setParent(this)
  3. 设置文本 setText("文本内容") //建议统一改成UTF-8
  4. 设置位置 move(x,y)
  5. 设置大小 resize(长,宽)

对象树

概念:当创建的对象在堆区的时候,如果指定的父亲是QObject派生下来的类或者QObject子类派生下来的类,可以不用管理释放的操作,将对象会放入到对象树中,简化了内存回收机制

自上往下构造,父类在释放后子类自动管理释放

析构顺序是从下往上,与构造顺序相反(没有孩子才可以释放)

所以不需要操心控件的析构

信号与槽函数性质

  • 信号

    自定义信号,写到signals下面

    返回值是void,只需要声明,不需要实现

    可以有参数,可以重载

    用emit进行触发

  • 槽函数

    早期Qt版本,必须写到public slots下,高级版本可以写到public或者全局下

    返回值void,需要声明,也需要实现

    可以有参数,可以重载

PS:当自定义信号和槽出现重载,需要使用函数指针处理(这里不是很明白)

​ 信号可以连接信号

​ 一个信号可以连接多个槽函数

​ 多个信号可以连接同一个槽函数

​ 信号和槽函数的参数类型必须一一对应

​ 信号和槽的参数个数可以不一致,信号的参数个数可以多于槽函数的参数个数,多于的丢弃不接收,反之不允许

QString ->char的步骤

  • ->QByteArray (.toUtf8( ))
  • ->char* (.data( ))

Qt4版本之前的信号和槽连接方式(Qt5往前兼容,反之不行)

connet(发送者,SIGNAL(信号),接收者,SLOT(槽函数));

优点:参数直观

缺点:类型不做检测

Lambda表达式

早期版本(Qt4)使用时需要在pro文件中声明

CONFIG += c++11

而Qt5自带该特性,不需专门声明

动态编译和静态编译

动态编译:发布的时候包含dll文件,一般需要将Qt的bin目录添加到环境变量才可以进行运行

静态编译:静态编译Qt库来链接程序,生成的文件不需要dll文件支持可直接运行,但是文件更大,缺乏灵活性

应用图标

  1. 发布时候将ico图标文件重命名为“myico.ico”并放在工程根目录下
  2. 在pro文件末尾加上一句 RC_ICONS = myico.ico

字符串显示

QObject::tr( )可以实现多国语言支持,建议所有显示到界面字符串都用"tr( )"括起来,实现中文显示,但是还是建议代码编写全部使用英文

保存文件要全部使用UTF-8进行编码。避免乱码

Qt编译过程

  1. 使用qmake生成该平台下的makefile
  2. 使用c++编译器进行编译(window下面的mingw32,Linux下的gcc,clang等),生成".o"文件
  3. 链接dll生成可执行文件

头文件包含

  • 使用<>,标准方式,先到环境变量,项目文件头文件寻找
  • 使用“”,先到当前项目目录找,找不到再按标准方式寻找

主窗口基类

有三种

  • QMainWindow
  • QDialog
  • QWidget(一个完全的空白窗口,前两者的父类)

一个程序只有一个主窗口,在main函数中打开,一般包含:

  • 菜单栏

  • 状态栏

  • 工具栏

一些零散内容

  • 选择QDialog时候需要需要注意LayoutSizeConstraint

  • 修改窗口标题在QWidget中的WindowTitle中

  • StyleSheet中添加颜色按钮,按按钮本身无效,要按“小三角”

  • 自己写了model模块需要在"mainwindow.h"的类private中实例化

    model * model

  • 包含头文件和<qstring.h>是一样的

posted @ 2020-05-14 09:27  Tzbubble  阅读(262)  评论(0编辑  收藏  举报