当前位置: 首页 > article >正文

QT学习一

对于选择qmake还是cmake,现在写的暂时先用qmake

1.命名规范和快捷键

2.按钮控件常用API

    //创建第一个按钮QPushButton * btn = new QPushButton;//让btn对象 依赖在mywidget窗口中btn->setParent(this);//显示文本btn->setText("第一个按钮");//创建第二个按钮 按照控件大小创建窗口QPushButton * btn2 = new QPushButton("第二个按钮",this);//移动btn2按钮btn2->move(100,100);//重设btn2按钮大小btn2->resize(100,100);//重置窗口大小resize(600,400);//设置固定窗口大小setFixedSize(600,400);//设置窗口标题setWindowTitle("第一个窗口");

3.对象树

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

4.信号和槽

//需求 点击我的按钮 关闭窗口
//参数1 信号的发送者 参数2 发送的信号(函数的地址) 参数3 信号的接受者 参数4 处理的槽函数connect(myBtn, &MyPushButton::clicked , this , &MyWidget::close);
// connect(myBtn, &QPushButton::clicked , this , &QWidget::close);//也可以使用父类的地址
classIsOver();//发出信号    void Widget::classIsOver()
{//下课函数,调用后 触发老师饿了的信号// emit zt->hungry();emit zt->hungry("宫保鸡丁");
}

5.自定义信号和槽

//teacher.h中的teacher类中signals://自定义信号 写道signals下//返回值是void,只需要声明,不需要实现//可以有参数,可以重载void hungry();void hungry(QString foodName);//重载的函数//student.h中的student类中public slots://早期QT版本 必须要写到public slots下,高级版本可以写到public或全局下//返回值void,需要声明,也需要实现//可以有参数,可以发生重载void treat();void treat(QString foodName);//重载的函数//调用重载的函数时//连接带参数的信号和槽 出现了重载//指针 -> 地址//函数指针 -> 函数地址void(Teacher::*teacherSignal)(QString) = &Teacher::hungry;//函数指针void(Student::*studentSlot)(QString) = &Student::treat;//函数指针connect(zt, teacherSignal , st , studentSlot );classIsOver();

 调用QString时,输出带双引号的处理方式

    // qDebug() << "请老师吃饭,老师要吃:" << foodName;//输出结果为 请老师吃饭,老师要吃: "宫保鸡丁"//QString -> char * 先转成QByteArray ( .toUtf8() )再转char * ( .data() )qDebug() << "请老师吃饭,老师要吃:" << foodName.toUtf8().data();//输出结果为 请老师吃饭,老师要吃: 宫保鸡丁 //不带引号

6.信号连接信号

      //点击一个 下课的按钮 , 再触发下课QPushButton * btn = new QPushButton("下课",this);this->resize(600,400);//点击按钮 触发下课// connect(btn , &QPushButton::clicked, this, &Widget::classIsOver);// 无参信号和槽连接void(Teacher::*teacherSignal2)(void) = &Teacher::hungry;//函数指针void(Student::*studentSlot2)(void) = &Student::treat;//函数指针connect(zt, teacherSignal2 , st , studentSlot2 );//信号连接信号connect(btn , &QPushButton::clicked, zt, teacherSignal2);

断开信号

  disconnect(btn , &QPushButton::clicked, zt, teacherSignal2);//只有前边的函数名不一样

7.lambda表达式

    //利用lambda表达式 实现点击按钮 关闭窗口QPushButton * btn2 = new QPushButton("关闭",this);btn2->move(200,0);connect(btn2,&QPushButton::clicked,this,[=](){emit zt->hungry("宫保鸡丁");});//lambda表达式常用的形式就是[=](){}

http://www.lryc.cn/news/2386720.html

相关文章:

  • 黑马点评Reids重点详解(Reids使用重点)
  • 小米2025年校招笔试真题手撕(一)
  • 《软件工程》第 11 章 - 结构化软件开发
  • MongoDB基础知识(浅显)
  • Neo4j(三) - 使用Java操作Neo4j详解
  • MPI实现大数据Ring Broadcast逻辑
  • 蓝桥杯3503 更小的数
  • 高并发下使用防重表做防重案例
  • 算法-全排列
  • 最好用的wordpress外贸主题
  • 2025 河北ICPC( D. 金泰园(二分)-- C.年少的誓约(公式转化))
  • mongodb语法$vlookup性能分析
  • 晶圆隐裂检测提高半导体行业效率
  • 临床试验中的独立数据监查委员会
  • 在 LangChain 中集成 Mem0 记忆系统教程
  • PTA练习题
  • 华润电力招聘认知能力测评及性格测评真题题库考什么?
  • Maven Profile在插件与依赖中的深度集成
  • 手机平板等设备租赁行业MDM方案解析
  • 【前端】使用HTTPS
  • Python应用“面向对象”小练习
  • 如何调试CATIA CAA程序导致的CATIA异常崩溃问题
  • SQL查询效率以及索引设计
  • day37打卡
  • 分布式缓存:证明分布式系统的 CAP 理论
  • 软件设计师“面向对象设计”真题考点分析——求三连
  • vue项目webpack、vite、rollup、parcel四种构建工具对比
  • 系统架构中的限流实践:构建多层防护体系(二)
  • Linux常见设备
  • AI大模型学习二十八、ACE-Step:生成式AI音乐大模型简介与安装(一)