黑马QtDay1学习笔记

黑马QtDay1学习笔记

1 Qt简介

1.1 发展史

2 Qt项目创建

2.1 项目名称 不能有空格和中文

2.2 项目路径不能有中文路径

2.3 创建窗口三大基类

2.3.1 QWidget类是所有用户界面对象的基类。

2.3.2 QMainWindow提供了一个主应用程序窗口

2.3.3 QDialog 简介:对话框:在主窗口中操作,有可能触发某一个行为动作,会弹出一个新的对话窗口,解决一个临时性的会话,在对话窗口中执行某一个功能。

2.4 Main函数中

2.4.1 QApplication a 应用程序对象 在Qt中 有且仅有一个

2.4.2 MyWidget w 窗口对象

2.4.3 w.show() 函数显示窗口

2.4.4 return a.exec()进入消息循环机制,阻塞功能

#include "mywidget.h"
#include <QApplication> //QApplication 应用程序类


//程序入口  argc  命令行变量数量    命令行变量数组
int main(int argc, char *argv[])
{

    //a 应用程序对象  在Qt中 应用程序对象  有且仅有一个
    QApplication a(argc, argv);

    //通过 窗口类 实例化对象  w
    MyWidget w;
    //窗口是不会默认弹出的,需要调用show方法进行显示
    w.show();


    //a.exec(); 进入消息循环机制   阻塞功能
    return a.exec();

//    while(1)
//    {
//        if( 点击叉子 )
//        {
//            break;
//        }
//    }

}

2.5 .pro文件

2.5.1 QT += core gui //Qt包含的模块

2.5.2 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //大于4版本 加入 widgets 模块

2.5.3 TARGET = 01_QtFirst //生成.exe程序的名称

2.5.4 TEMPLATE = app //模板 应用程序模板

2.5.5 SOURCES += main.cpp\ //源文件

2.5.6 mywidget.cpp

2.5.7 HEADERS += mywidget.h //头文件

3 QPushButton按钮

3.1 QPushButton * btn = new QPushButton; 创建按钮对象

3.2 btn - >setParent(this) 设置父亲

3.3 设置显示文本 setText

3.4 移动 move

3.5 重置窗口大小 resize

3.6 设置固定窗口大小 setFixedSize

3.7 设置窗口标题 setWindowTitle

#include "mywidget.h"
#include <QPushButton>
#include "mypushbutton.h"
#include <QDebug>
//命名规范
// 类名 首字母 大小  单词和单词之间 首字母 大写
// 变量、函数名 首字母小写 单词和单词之间 首字母 大写

//快捷键
// 运行 ctrl + R
// 编译 ctrl + B
// 查询 ctrl + F
// 注释 ctrl + /
// 帮助 F1
// 字体缩放  ctrl + 鼠标滚轮
// 整行代码移动  ctrl + shift + ↑ ↓
// 自动对齐  ctrl + i
// 同名之间的.h .cpp切换  F4

// 帮助文档 F1    左侧列表中按钮    C:\Qt\Qt5.6.0\5.6\mingw49_32\bin


MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    //按钮
    QPushButton * btn = new QPushButton;

    //btn->show(); //show用顶层方式弹出

    //如果想显示到当前窗口中 ,需要做依赖
    btn->setParent(this);

    //显示文本
    btn->setText("德玛西亚");

    //按钮2
    QPushButton * btn2 = new QPushButton("第二个",this);

    //移动btn2
    btn2->move(100,100);

    //重置窗口大小
    resize(600,400);

    //按钮 可以重置大小吗? 可以
    //btn->resize(300,200);

    //指定窗口标题
    setWindowTitle("第一个窗口");

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


    //创建自定义的按钮
    MyPushButton * myBtn  = new MyPushButton;
    myBtn->setParent(this);
    myBtn->setText("我的按钮");
    myBtn->move( 300,200);


    //点击按钮  关闭窗口
    //connect(  信号发送者,发送的信号,信号的接受者,处理的槽函数)
    //信号和槽 优点: 松散耦合
   // connect(myBtn, &QPushButton::clicked , this, &QWidget::close );
    connect( myBtn , &MyPushButton::clicked ,this, &MyWidget::close);

}

MyWidget::~MyWidget()
{
    qDebug() << "MyWidget析构调用";
}

4 Qt中的对象树

4.1 一定程度上简化了内存回收机制

4.2 当创建的对象 指定的父亲是由QObject或者Object派生的类时候,这个对象被加载到对象树上,当窗口关闭掉时候,树上的对象也都会被释放掉

image-20230521113445128

5 Qt中的坐标系

5.1 x以右侧为正

5.2 y以下侧为正

5.3 左上角是 0,0点

6 Qt中信号和槽基本使用

6.1 需求:点击按钮关闭窗口

6.2 连接 connect ( 信号的发送者,发送的信号,信号的接受者,处理的槽函数)

connect( myBtn , &MyPushButton::clicked ,this, &MyWidget::close);

6.3 测试

7 自定义信号和槽

7.1 自定义信号 写在 signals下

7.1.1 返回值是void

7.1.2 只需要声明 不需要实现

7.1.3 可以有参数 可以发生重载

7.2 自定义槽函数 写在 public 或者全局函数 或者 public slot 或者lambda

7.2.1 返回值是void

7.2.2 需要声明 也需要有实现

7.2.3 可以有参数 可以发生重载

7.3 当信号和槽发生重载时候,需要利用函数指针明确指出函数地址

7.3.1 void(Teacher:: *teacherSignal)(QString) = &Teacher::hungry;

7.4 将QString 转为 char *

7.4.1 .toUtf8()转为 QByteArray数据类型

7.4.2 .data() 转为 char * 类型

8 信号和槽拓展

8.1 信号是可以连接信号

8.2 可以断开信号和槽 disconnect

8.3 一个信号可以响应多个槽函数

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

8.5 信号和槽函数的参数类型 必须一一对应,信号的参数个数 可以多余槽函数的参数个数,反之不可以 , 参数类型要一一对应

9 Qt4版本信号和槽写法

9.1 优势 :参数直观

9.2 劣势 :参数类型不做匹配检测

9.3 Qt4本质 SIGNAL(“hungry(int)”)SLOT(“treat(QString)”)

10 Lambda表达式

10.1 mutable -> type {}组成

10.2 []中可以加 = & a &a … 推荐 使用 =

10.3 () 形参列表

10.4 {} 实现体

10.5 mutable可以修改按值传递进来的拷贝

10.6 -> type 代表lambda表达式返回值类型

11Qt信号和槽总结

image-20230521191540512

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泷fyk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值