Qt
文章平均质量分 53
Qt 跨平台图形库
thefist11
难以忘记编程路上领导和好友的细致指导,所以必须努力!(真诚希望大家多多指导!)
展开
-
QT 32位程序Debug模式发布问题
1. 32位release模式没问题.直接运行"windeployqt xx.exe",再将exe和dll文件全部copy到remote机器,可以运行2. debug模式下出错直接运行"windeployqt xx.exe",再将exe和dll文件全部copy到remote机器,提示msvcp140d.dlll链接问题:"无法定位程序输入点 __vcrt_cleanup_type_info_names 于动态链接库 C:\WINDOWS\SYSTEM32\MSVCP140D.dll 上 " 2.1原创 2021-03-24 21:59:06 · 555 阅读 · 0 评论 -
6. Qt 信号与信号槽(11)Qt::ConnectionType类型
原创 2020-11-06 14:58:35 · 220 阅读 · 0 评论 -
Qt 原理-MOC(3) 对象模型
每一个Object可以指定一个父亲Object,当创建一个QObject时,如果使用了其他的对象作为其父对象(parent),那么这个 QObject就会被添加到父对象的children()列表中,这样当父对象被销毁时,这个QObject也会被销毁。Composite Pattern: Parents and ChildrenA composite object is something that can contain children.A component object is somethi原创 2020-11-06 14:58:49 · 247 阅读 · 0 评论 -
Qt 原理-MOC(1)Meta Object Compiler
Qt程序编译两个步骤:1. qmake生成Makefile文件,Makefile.Debug, Makefile.Release主要是通过MOC(Meta Object Compiler) 元对象编译器生成moc_xxx.cppMOC元对象编译器是Qt 原理的重要特性,主要分为几个方面: 信号与信号槽 属性系统对象模型事件2. make...原创 2020-10-22 21:21:36 · 525 阅读 · 0 评论 -
6. Qt 信号与信号槽(10)QObjectPrivate::addConnection
void QObjectPrivate::addConnection(int signal, Connection *c){ Q_ASSERT(c->sender == q_ptr); if (!connectionLists) connectionLists = new QObjectConnectionListVector(); if (signal >= connectionLists->count()) connection原创 2020-11-06 14:59:11 · 642 阅读 · 1 评论 -
6. Qt 信号与信号槽(9)总结分析
1. connect 将当前QObject的receiver加到connectionlist中。 Tom tom; Jerry jerry; QObject::connect(&tom, &Tom::miao, &jerry, &Jerry::runAway); tom.miaow();-> QObject::connect -> QObjectPrivate::connect -> QObjectPrivate::原创 2020-10-22 21:41:48 · 197 阅读 · 0 评论 -
6. Qt 信号与信号槽(8)实例分析
Jerry.h 和Tom.h 是我写的,moc_Jerry.cpp是moc生成的。moc生成文件的规则可参考此文:Qt 原理-MOC(2) QObject.h(点击查看)Jerry.hclass Jerry : public QObject{ Q_OBJECTpublic: Jerry(QObject *parent = nullptr) : QObject(parent) { }public slots: void runAway() {原创 2020-10-22 21:35:18 · 233 阅读 · 0 评论 -
Qt 原理-MOC(2) QObject.h
QObject.h的主要作用Q_OBJECT宏主要做了这几件事:1. 定义一个静态的元对象staticMetaObject。2. 重载QObject类定义的虚函数metaObject()。4. 重载QObject类定义的虚函数qt_metacast()5. 重载QObject类定义的虚函数qt_metacall()6. 定义静态函数qt_static_metacall()国际化支持,QT_TR_FUNCTIONS会被展开为tr()和trUtf8()两个函数,以便你可以对你的类中需要作国际化原创 2020-10-22 21:32:31 · 415 阅读 · 0 评论 -
6. Qt 信号与信号槽 (7)-QMetaObject:: activate
最后调用callFunction() 或者metaCall()void QMetaObject::activate(QObject *sender, int from_signal_index, int to_signal_index, void **argv){ // 这里得到的是QObject的数据,首先判断是否为阻塞设置 if (sender->d_func()->blockSig) return; // 得到全局链表 QConnectionList原创 2020-10-22 20:52:50 · 5168 阅读 · 0 评论 -
6. Qt 信号与信号槽 (6)- QObject::connect
函数调用流程为:QObject::connect ->QObject::connectImpl->QObjectPrivate::connectImpl->QObjectPrivate::get(s)->addConnectionclass QObject{static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer<Func1>::Object原创 2020-10-22 20:50:50 · 1120 阅读 · 0 评论 -
6. Qt 信号与信号槽 (5)-QObjectPrivate
QObjectPrivate 是QObject的d_ptr指针QObject.hclass Q_CORE_EXPORT QObject{protected: QObject(QObjectPrivate &dd, QObject *parent = nullptr);protected: QScopedPointer<QObjectData> d_ptr;}QObject.cppQObject::QObject(QObject *parent)原创 2020-10-22 20:26:29 · 548 阅读 · 0 评论 -
6. Qt 信号与信号槽(4)-QMetaObjectPrivate
QMetaObjectPrivate是QMetaObjectd指针里面的data成员struct QMetaObjectPrivate{ // revision 7 is Qt 5.0 everything lower is not supported // revision 8 is Qt 5.12: It adds the enum name to QMetaEnum enum { OutputRevision = 8 }; // Used by moc, qmetaobj.原创 2020-10-22 20:17:45 · 328 阅读 · 0 评论 -
6. Qt 信号与信号槽(3)-QMetaObject
QMetaObject包含了QObject的元数据,也就是QObject信息的一些描述信息:除了类型信息外, signal&slot信息,Property等。数据都保存在d指针里面( QMetaObject.h 最后有声明d指针变量)。QMetaObject.hstruct Q_CORE_EXPORT QMetaObject{ class Connection; const char *className() const; const QMetaObject *supe原创 2020-10-22 06:44:00 · 563 阅读 · 0 评论 -
6. Qt 信号与信号槽(2) - Q_OBJECT
Q_OBJECT宏- QObject#define Q_OBJECT public: static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); virtual int qt_metacall(QMetaObject::Call, int, void **); Q_DECL_HIDDEN_STA原创 2020-10-22 06:36:25 · 612 阅读 · 0 评论 -
6. Qt 信号与信号槽(1)
信号槽是对象和对象之间的通信机制,类似于观察者模式。object.h#ifndef DB_OBJECT#define DB_OBJECT#include <map># define db_slots# define db_signals protected# define db_emitclass Object;struct MetaObject{ const char * sig_names; const char * slts_names; static void原创 2020-10-20 19:36:37 · 196 阅读 · 0 评论 -
5. Qt 调用OpenCV库-Qt的QImage 与 OpenCV的Mat 之间的转换
5.1 Mat->QImage:QImage Image::cvMatToQImage( const cv::Mat &inMat){ //https://github.com/asmaloney/asmOpenCV/blob/master/asmOpenCV.h#if Q_BYTE_ORDER == Q_BIG_ENDIAN#error Some of QImage's formats are endian-dependant. This file assumes littl原创 2020-10-19 22:07:12 · 404 阅读 · 0 评论 -
4.1 Qt绘图原理
Graphics View Framework是一个基于元素(item)的 MV 架构的框架。它可以分成三个部分:元素 item、场景 scene 和视图 view。文图1 Graphics View Framework的图形界面库的架构QGraphicsScene维护一个列表,包含多个QGraphicsItem。QGraphicsView作为视口,也就是我们的观察窗口,相当于照相机的取景框,这个取景框可以覆盖整个场景,也可以是场景的一部分。图2 坐标代码为:int main(int arg原创 2020-10-19 22:01:38 · 433 阅读 · 0 评论 -
4.Qt Core
1.Qt Core提供的框架:1、动画框架2、在Qt JSON支持3、状态机框架4、如何创建Qt插件5、事件系统2. QtCore模块是所有其它Qt模块的基础,包含以下核心功能:Qt Data Types:数据类型Qt Object Model:对象模型(包括元对象模型、属性系统、信号与槽机制、对象树)Input/Output Classes:I/O读写Threading and Concurrent Programming:多线程和并发编程QCoreApplication:应用程序原创 2020-10-19 21:49:02 · 280 阅读 · 0 评论 -
3. Qt Creator
Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境。Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境,并确保首次接触Qt框架的开发人员能迅速上手和操作。即使不开发Qt应用程序,Qt Creator也是一个简单易用且功能强大的集成开发环境。Qt Creator包含了一套用于创建和测试基于Qt应用程序的高效工具,包括:C++代码编辑器上下文感知帮助系统可视化调试器源代码管理项目和构建管理工具3.1 ui 文件编辑3.2 编辑ui控件属性原创 2020-10-19 21:22:35 · 460 阅读 · 0 评论 -
2. Qt类图
2.1Qt 类图2.2 一个使用Qt的例子原创 2020-10-19 21:20:19 · 840 阅读 · 0 评论 -
1. Qt 简介
1.简介QT是一种基于C++的跨平台图形用户界面应用程序开发框架。既可以开发GUI程序,也可用于开发非GUI程序。具备面向对象、丰富的 API、支持 2D/3D 图形渲染,支持 OpenGL和大量的开发文档。1.1Qt 基础模块Qt基础模块分为:Qt Core提供核心的非 GUI功能,所有模块都需要这个模块。这个模块的类包括了动画框架、定时器、各个容器类、时间日期类、事件、IO、JSON、插件机制、智能指针、图形(矩形、路径等)、线程、XML等。所有这些类都可以通过 头文件引入。Qt原创 2020-10-19 21:17:09 · 1106 阅读 · 0 评论
分享