Qt学习笔记

Qt简介

1. 跨平台图形界面引擎

2. 优点

  • 跨平台
  • 接口简单容易上手
  • 一定程度上简化了内存回收

3. 版本

  • 商业化
  • 开源

4. 成功案例

  • Linux桌面环境KDE
  • 谷歌地图
  • VLC多媒体播放器

创建Qt项目

  • 点击创建项目后. 选择项目路径以及给项目起名称
  • 名称: 不能有中文, 不能有空格
  • 路径: 不能有中文路径
  • 默认创建有窗口类, Widget, 基类有三种选择: QWidget, QMainWindow, QDebug

main函数

  • QAppliacation a应用程序对象, 有且仅有一个
  • Widget w实例化窗口对象
  • w.show() 调用show()函数显示窗口
  • return a.exe() 让应用程序对象进入消息循环机制中, 代码阻塞到当前行

按钮控件常用API

  • 创建QPushButton *btn = new QPushButton;
  • 设置父类 setParent(this)
  • 设置文本 setText("文本");
  • 设置位置 move(width, height)
  • 重新指定窗口大小 resize()
  • 设置窗口的标题 setWindowTitle()
  • 设置窗口固定大小 setFixedSize()

对象树

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

Qt中的坐标系

  • 左上角为0, 0点
  • x以右为正方向
  • y以下为正方向

信号和槽

1. 连接函数: connect

  • 参数1 信号的发送者
  • 参数2 发送的信号(函数的地址)
  • 参数3 信号的接收者
  • 参数4 处理的槽函数(函数的地址)

2. 松散耦合

  • connect(btn, &QPushButton::click, this. &QWidget::click)

自定义信号和槽

1. 自定义信号

  • 写到signals下
  • 返回void
  • 需要声明, 不需要实现
  • 可以有参数, 可以重载

2. 自定义槽函数

  • 返回void
  • 需要声明, 也需要实现
  • 可以有参数, 可以重载
  • 写到public slot下, 或者public或者全局函数

3. 触发自定义的信号

  • emit自定义信号

4. 当自定义信号和槽出现重载

  • 需要利用函数指针 明确指向函数的地址

  • void (Teacher::*teacherSignal)(QString) = &Teacher::hungry;
    
  • QString转成char*

    • .ToUtf8() 转为 QByteArray
    • .Data() 转为 Char*
原文地址:https://www.cnblogs.com/SCP-514/p/14256539.html