QT笔记第一天

喜你入骨 提交于 2020-02-15 12:42:06

三种基类:

  • QMainWindow:基类, 最基本的什么都没有
  • QWidget:它的父类是QMainWindow, 包含一些状态栏以及菜单栏相关的信息
  • QDialog:它的父类是QMainWindow, 包含一些对话框

程序中:

return a.exec();//让应用程序对象进入消息循环,程序阻塞到这一行,知道点击错号x程序运行结束

.pro文件

QT += core gui //qt包含的模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widget //版本大于4时,包含widget这个模块
TARGET = 01_FirstProject // 目标:生成exe的名称
TEMPLATE = app //模板:创建应用程序模板
SOURCES += ……//源文件
HEADERS += ……//头文件

.h文件

Q_OBJECT//Q_OBJECT宏:允许类使用信号和槽的机制

帮助文档

在文件夹Qt5.11.3/5.11.3/bin/assistant

按钮操作

  • 创建QPushButton * btn = new QPushButton;
  • 设置按钮的名称 btn->setText(“titile”);
  • 设置按钮在哪个窗口下 btn->setParent(this);
  • 设置按钮的位置 btn->move(100,100);
  • 设置按钮的大小 btn->resize(50,50);

窗口操作

  • 设置窗口的名称 setWindowTitle(“title”)
  • 设置窗口的大小 resize(300, 400)
  • 设置窗口为固定大小,此时不能缩放了 setFixedSize(400, 400)

信号和槽

槽:信号的处理函数
信号槽的优点:松散耦合。信号的发送方和信号的接收方,本身没有什么关系,通过一个connect函数连接起来
connect(参数1,参数2,参数3,参数4)

  • 参数1:信号的发送方(按钮btn)
  • 参数2:发送的信号(地址,点击:clicked)
  • 参数3:信号的接收方(窗口:this)
  • 参数4:处理的槽函数(关闭:close)
    connect(btn, &QPushButton::clicked, this, &QWidget::close);

自定义信号和槽

自定义信号:

  • 需要声明,不需要实现
  • 返回值类型void,可以有不同个数的参数,可以重载
  • 信号函数写在signals关键字下

自定义槽函数:

  • 需要声明,也需要实现
  • 返回值类型为void,可以有不同个数的参数,可以重载
  • 槽函数写在public slots或者public关键字下

触发自定义信号:关键字emit

案例02
下课后,老师发信号饿了,学生响应请客吃饭

当自定义信号和槽函数出现重载

  • 需要利用函数指针指向明确的函数
  • void (Teacher::*signaltea) (QStirng) = &Teacher::hungry
  • QString类型转化成char * 类型:需要先利用 .toUtf8() 转化成 QByteArray,再利用 .data()转化成char *
  • 信号可以连接信号
  • 断开信号disconnect

拓展

  • 信号可以连接信号
  • 一个信号可以连接多个槽函数
  • 多个信号可以连接一个槽函数
  • 信号函数的参数个数要和槽函数的个数一 一对应,信号函数的参数个数可以多余槽函数的个数,反之不行
  • 信号槽可以断开连接

QT4版本的写法

connect(信号发送者, SIGNAL(信号函数),信号接受者,SLOT(槽函数) )
优点:参数直观
缺点:编译时,不会进行错误检测

lambda表达式

  • [ ]标识符,匿名函数
  • ()参数
  • { } 函数体
  • [=]值传递;[&]引用传递
  • mutable:修饰值传递的变量,改变的是变量的副本,改变不了参数本身
  • 返回值:()[]->int{return 100;};
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!