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

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表达式常用的形式就是[=](){}

相关文章:

  • set和map简单模拟实现
  • Ansible常用模块
  • 如何做好一份网络安全技术文档?
  • java中的线程安全的集合
  • 航空航天领域对滚珠丝杆的精度要求有多高?
  • 汉诺集团CDN+富氢水机全球发布:科技赋能健康,革新饮水革命
  • Java大师成长计划之第31天:Docker与Java应用容器化
  • 消防营区管理升级:豪越科技智能仓储与装备管理的力量
  • 解锁webpack:处理跨域devserver、摇树treeshaking、图片压缩sharp
  • xhr、fetch和axios
  • 第Y1周打卡——调用官方权重进行检测
  • O2OA服务器配置与管理-自定义消息提醒
  • 【Java学习笔记】单例设计模式
  • Netty应用:从零搭建Java游戏服务器网络框架
  • 进程通信(管道,共享内存实现)
  • Java设计模式之责任链模式:从基础到高级的全面解析
  • AutoKeras的模型保存与加载
  • 广东省省考备考(第二十一天5.26)—言语(第八节课)
  • 《软件工程》第 5 章 - 需求分析模型的表示
  • CMU-15445(5)——PROJECT#1-BufferPoolManager-Task#3
  • 肇东市建设局网站/bt磁力兔子引擎
  • 群辉服务器做网站/百度公司招聘2022年最新招聘
  • 古镇企业网站建设/互联网全网营销
  • 办公室装修风格图/公司网站seo公司
  • iis网站日志/济南网站seo公司
  • 上海网站公司电话/公司网站建设费