QT编程细节

目录

  • 2020年7月6日笔记
  • MVC架构安排(以QTreeView为例)
    • 架构图
  • error C2143: 语法错误 : 缺少";"(在"*"的前面)
  • 多线程测试小程序
  • 2020年7月7日笔记
  • 2020年7月8日
  • 待更。。。

2020年7月6日笔记

  1. 在类名前面写一些注释:本小类用于描述…
  2. 若使用SIgnal,则命名的是时候使用signal…
  3. 若是变量则写为:m_变量名。
  4. 指针:m_p指针名
  5. 文件名主要以大写开头,驼峰命名法。
  6. 类名就用C类名(类名大写开头)
  7. 单个函数,基本不超过100行的代码。
  8. go语法尽量少用。破坏程序的静态结构。
  9. Q_OBJECTL:使用到一些QT的一些啥信号槽功能。
  10. 索引向导用excel文件来管理自己所得到的一些deMo.用一个
  11. 在头文件中对方法的定义,一般弄成protected
  12. 直接使用#include
  13. 对象名:p_对象名

MVC架构安排(以QTreeView为例)

架构图

QT编程细节_第1张图片
重点

  1. 在MainWindow中对页面进行安排,也就是用MyTreeView new出对象,进行布局。
  2. 在MyTreeView中进行初始化,使用MyTreeModel new出对象,进行this->setmodel(p_model)操作。
  3. 在MyTreeModel中对数据进行操作。例如:设置拖拽的数据操作,以及设置哪些文件能进行拖拽。使用QMimeData的相关函数进行操作。

总结:->含义:类似调用操作的意思
MainWindow->QTreeView->QTreeModel->对数据进行操作。
code:
https://download.csdn.net/download/weixin_38809485/12582008

error C2143: 语法错误 : 缺少";"(在"*"的前面)

解决办法:头文件包含错误。可能你在非主线程文件中包含了主线程的头文件,导致错误。例如:https://blog.csdn.net/u014493318/article/details/47359809

多线程测试小程序

效果
QT编程细节_第2张图片
github:https://github.com/zwzchome/QtDemo

2020年7月7日笔记

  1. 关于带参信号槽的使用:https://blog.csdn.net/lyc_daniel/article/details/12047819
  2. 在使用connect函数时 ,切记勿在里面写入具体的参数,只需要写参数类型即可。
  3. 在使用connect时,应尽量connect函数放在MainWindow的初始过程中,这样,才能是connnect只被连接一次,而不会每次运行都连接,导致槽函数的响应速度越来越低。
  4. 参考自信号槽的注意事项

1、信号需符合以下规则
 信号使用signals关键字声明,在其后面有一个冒号“:”,在其前面不能有public、private、protected访问控制符,信号默认是public的。
 信号只需像函数那样声明即可,其中可以有参数,参数的主要作用是用于和槽的通信,这就像普通函数的参数传递规则一样。信号虽然像函数,但是对他的调用方式不一样,信号需要使用emit关键字发送。
信号只需声明,不能对其进行定义,信号是由moc自动生成的。
 信号的返回值只能是void类型的。
2、声明槽需符合以下规则
 声明槽需要使用slots关键字,在其后面有一个冒号“:”,且槽需使用public、private、protected访问控制符之一。
 槽就是一个普通的函数,可以像使用普通函数一样进行使用,槽与普通函数的主要区别是,槽可以与信号关联。
3、发射信号需符合以下规则:
 发射信号需要使用emit关键字,注意,在emit后面不需要冒号。
 emit发射的信号使用的语法与调用普通函数相同,比如有一个信号为void f(int),则发送的语法为:emit f(3);
 当信号被发射时,与其相关联的槽函数会被调用(注意:信号和槽需要使用QObject::connect函数进行关联之后,发射信号后才会调用相关联的槽函数)。
 注意:因为信号位于类之中,因此发射信号的位置需要位于该类的成员函数中或该类能见到信号的标识符的位置。

  1. Qt之QMetaObject::invokeMethod()使用简介
  2. 相对独立的程序块之间,变量说明之间必须加空行。
  3. if,for,do ,while等语句的执行语句部分无论多少都要加括号。

2020年7月8日

QT编程细节_第3张图片
注意里面有句不能指定父对象的语句。

  1. 注意model所使用的刷新函数为:model->refresh()
  2. 使用前置声明的原因:由于有可能出现两个类互相使用对方类对象的问题,这样会出现互相包含的问题,而只要在B类的前面声明class 类A;就可以了,这种就叫做前置声明。参考QT学习之路-C++类的前置声明

待更。。。

你可能感兴趣的:(QT学习教程,QT)