QT学习笔记(持续更新)

    技术2025-02-25  16

    QT是跨平台C++图形用户界面应用程序开发框架。 项目名称和路径不能有中文 默认的三个基类 QWidget QMainWindow QDialog 默认创建的文件 .pro工程文件 main.cpp入口函数 自己新建的.cpp和.h文件 .pro QT +=core gui //QT包含的模块 greaterThan(QT_MAJOR_VERSION, 4):QT += widgets//4版本以上加入widget TARGET = 01_QtFirst //目标 生成的.exe程序名称 TEMPLATE = app //模板 Applicantion应用程序

    SOURCES += main.cpp\ 源文件 新建文件.cpp

    HEADERS += 新建文件.h //头文件

    main函数 QApplication a 应用程序对象,在Qt中有且仅有一个 MyWidget w 创建自定义窗口对象 w.show() 通过show显示窗口(默认置顶层) return a.exec()进入消息循环,让程序阻塞到当前行(窗口不消失)

    基本控件接口 按钮 QPushButton * btn = new QPushButton btn->setParent(this)设置父窗口 显示文本 btn->setText("") 移动 btn->move(x,y) 窗口设置 resize(宽,高) 设置固定大小 setFixedSize(宽,高) 设置窗口标题 setWindowTitle("")

    qDebug()相当于cout 在QDebug头文件下 释放是从底层开始的 对象树 在创建对象的时候,如果父类是QObject或者QObject派生类(子类),这个对象可以不用去管理释放,会放入到一个对象树上,析构会自动管理对象的释放 构造的顺序和释放的顺序是相反的

    坐标系 左上角是0,0点

    点击按钮关闭窗口 利用connect进行连接 参数1 信号的发送者 参数2 发送的信号 参数3 信号接收者 参数4 处理槽函数 connect(mybtn,&QPushButton::clicked,this,&QWidget::close); 优点:松散耦合 将不相关的2个内容连接到一起

    自定义信号和槽 自定义信号写法:写到signals下 返回值是void 只需要声明不需要实现 可以发生重载 自定义槽函数 写到 public 或者 public slot或者全局函数 或者lambda表达式 返回值是void 需要声明 需要定义 可以发生重载 触发自定义信号emit 自定义信号 利用 connect就可以实现 自定义信号和槽

    QT中的字符串 Qstring

    当自定义信号和槽发生重载之后,需要利用函数指针,明确指出函数地址 信号可以连接信号 一个信号可以连接多个槽函数 多个信号可以连接同一个槽函数 信号和槽的参数类型,必须一一对应 信号的参数个数 可以多于槽函数的个数,但是类型也要一一对应 信号和槽是可以断开连接的 disconnect函数 用法跟 connect相同

    QT4版本的缺陷 信号和槽写法 参数类型不做检测 优点是参数直观

    QString 转为 char* .toUtf8转 QByteArray 再.data()转char*

    lambda表达式 一般使用 ={} 值传递方式传递 &{}引用方式传递 但是容易出错不建议使用 加上mutable修饰符后,可以修改按值传递进来的拷贝(注意是能修改拷贝,而不是值本身) 返回值 n = ->int{return 100;}();最后的()是表示函数表达式 lambda本质上就是一个函数 CONFIG +=c++11 低版本使用lambda要在pro文件加上该表达式

    QMainWindow 菜单栏 1.只有一个 2.QMenuBar* bar = MenuBar() 3.设置到窗口中 setMenuBar(bar) 4.利用菜单栏 添加 菜单 QMenu * fileMenu =bar->addMenu("") QAction * newAction = fileMenu->addAction("") 5.添加分割线 fileMenu->addSeparator(); 工具栏 1.新建 QToolBar * toolBar = new QToolBar(this); 2.添加到窗口中 addToolBar(Qt::LeftToolBarArea,toolbar);//默认左边 3.设置停靠 setAllowedAreas(Qt::LeftToolBarArea)//只允许在左边停靠可以设置 4.设置浮动 setFloatable(false);//不允许浮动返回值是bool类型 5.设置移动 setMovable(false);//不允许移动 6.添加小控件 QPushButton * btn =new QPushButton(“按钮”,this); toolBar->addWidget(btn);//添加一个按钮到工具栏中 7.工具栏中添加菜单项 toolBar->addAction();

    Processed: 0.009, SQL: 9