Qt5.9C++开发指南(王维波,栗宝鹃,侯春望)

书: https://pan.baidu.com/s/1A6ZLSPMbCiZ-L4eRucUvXQ?pwd=kt7i

一、Qt框架基础

  1. “Qt的核心是元对象系统(Meta-Object System),通过moc(元对象编译器)实现信号槽、反射等特性。”
  2. QObject是所有Qt类的基类,提供对象树管理(父对象销毁时自动析构子对象)和内存回收机制。”
  3. Q_OBJECT宏必须出现在类声明的私有区,用于启用信号槽和动态属性等特性。”

二、信号与槽机制

  1. “信号槽是Qt的事件通信机制,通过connect绑定,支持一对多、多对一连接,线程安全。”
  2. emit触发信号时,槽函数执行方式取决于连接类型:Qt::AutoConnection(自动判断线程上下文)。”
  3. “Lambda表达式可作为槽函数,简化代码:connect(btn, &QPushButton::clicked, []{ qDebug() << "Clicked"; });

三、GUI设计与控件

  1. QWidget是可视化组件的基类,QMainWindow提供主窗口框架(菜单栏、状态栏、工具栏等)。”
  2. “布局管理器(QHBoxLayoutQVBoxLayoutQGridLayout)自动调整控件位置,避免绝对坐标。”
  3. “样式表(QSS)通过CSS语法定制控件外观,如QPushButton { color: red; }。”

四、模型/视图编程

  1. “MVC模式在Qt中简化为模型/视图架构,QStandardItemModel+QTableView实现表格数据展示与编辑。”
  2. “自定义模型需继承QAbstractItemModel,重写data()setData()等方法。”

五、文件与网络

  1. QFile读写文件,QTextStream处理文本编码,QDataStream序列化二进制数据。”
  2. “网络请求使用QNetworkAccessManager,异步处理HTTP响应,避免阻塞UI线程。”

六、多线程与并发

  1. QThread的正确用法是继承并重写run()方法,或使用moveToThread将对象移至子线程。”
  2. “线程间通信必须通过信号槽或QMetaObject::invokeMethod,禁止直接跨线程访问对象。”

七、图形与动画

  1. QPainter实现2D绘图,支持矢量图形(路径、渐变)、图像缩放和坐标变换。”
  2. QPropertyAnimation控制属性动画,如平滑移动窗口:animation->setPropertyName("geometry");

八、国际化与调试

  1. “国际化流程:用tr()包裹文本→lupdate生成.ts文件→Linguist翻译→lrelease生成.qm文件。”
  2. qDebug()输出调试信息,Q_ASSERT断言检查条件,qInstallMessageHandler自定义日志处理。”

九、部署与扩展

  1. “发布应用时,windeployqt(Windows)或macdeployqt(Mac)自动打包依赖库。”

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注