
Qt
文章平均质量分 72
Qt底层原理
道格拉斯范朋克
中间件
展开
-
源码解析8-QSS原理-案例-Qt的qss特殊设置多个子控件的颜色与伪状态
有些时候我们想特殊设置QSS,比如某一类标题栏目,某一个窗口中的颜色。当我们想多个ID选择器一起设置时,复合语句,需添加逗号分割。设置名称为okButton的qss。重要的是我们需要同时设置多个特殊的按钮等。多个ID选择器的伪状态设置。原创 2023-12-18 16:15:56 · 851 阅读 · 0 评论 -
源码解析2-GUI-绘制引擎(QPainter源码分析 )
Qt GUI 模块中最重要的类是QGuiApplication和QWindow。想要在屏幕上显示内容的 Qt 应用程序需要使用这些。QGuiApplication包含主事件循环,其中处理和调度来自窗口系统和其他来源的所有事件。它还处理应用程序的初始化和结束。QWindow类表示底层窗口系统中的一个窗口。它提供了许多虚拟函数来处理来自窗口系统的事件 ( QEvent ),例如触摸输入、曝光、焦点、击键和几何变化。Qt GUI 模块包含 2D 图形、图像、字体和高级排版的类。使用表面类型QSurface::Ra原创 2023-01-04 17:10:06 · 881 阅读 · 0 评论 -
源码解析6-系统封装-QTableView实现
如果你想开发一个模型/视图应用程序,你应该从哪里开始?我们建议从一个简单的示例开始,然后逐步扩展它。这使得理解架构变得容易得多。事实证明,在调用 IDE 之前尝试详细了解模型/视图体系结构对许多开发人员来说不太方便。从具有演示数据的简单模型/视图应用程序着手要容易得多。试试看!只需将以下示例中的数据替换为您自己的即可。原创 2022-12-15 14:09:07 · 752 阅读 · 0 评论 -
源码解析6-系统封装-图形视图框架(Graphics View Framework )
Graphics View 提供了一个用于管理大量定制 2D 图形项目并与之交互的界面,以及一个用于可视化项目的视图小部件,支持缩放和旋转。该框架包括一个事件传播架构,允许对场景中的项目进行精确的双精度交互功能。 项目可以处理按键事件,鼠标按下、移动、释放和双击事件,它们还可以跟踪鼠标移动。 图形视图使用 BSP(二进制空间分区)树来提供非常快速的项目发现,因此,它可以实时可视化大型场景,即使有数百万个项目。原创 2022-12-14 19:42:31 · 449 阅读 · 0 评论 -
源码解析11-QLineEdit控件信号textChanged和textEdited区别
Qt源码解析11-QLineEdit控件信号textChanged和textEdited区别原创 2022-11-18 16:26:27 · 735 阅读 · 0 评论 -
Qt源码解析11-QLineEdit与QValidator关系源码解析
QLineEdit与QValidator关系源码解析QLineEdit控件信号textChanged和textEdited区别callWindowProcA 函数(winuser.h)原创 2022-11-18 15:19:14 · 954 阅读 · 0 评论 -
Qt源码解析-源码解析-QVideoWidget播放手机视频旋转问题
启动后报错,DirectShowPlayerService::doRender: Unresolved error code 0x80040266 (IDispatch error #102)当尝试QWidget的旋转方法后,发现并不生效。使用手机拍摄的视频是竖屏的,上传后,使用QVideoWidget播放,变成横屏。setVideoOutput,采用专用的类后,可以实现旋转。)函数,使用QTransform实现旋转。QGraphicsVideoItem/QVideoWidget原创 2022-11-16 17:58:12 · 811 阅读 · 0 评论 -
QML 术语表
QML 术语表原创 2022-10-17 17:23:38 · 1207 阅读 · 0 评论 -
QML 应用程序
QML 是一种用户界面规范和编程语言。它允许开发人员和设计人员创建高性能、流畅的动画和视觉上吸引人的应用程序。QML 提供了一种高度可读的、声明性的、类似 JSON 的语法,支持结合动态属性绑定的命令式 JavaScript 表达式。QML 语言和引擎基础设施由Qt QML模块提供。有关 QML 语言的详细信息,请参阅Qt QML模块文档。以下页面包含有关 QML 的更多信息:QML 的第一步- 通过这些示例开始使用 QML在 Qt Creator 中创建 Qt Quick 项目。原创 2022-10-15 15:03:50 · 1153 阅读 · 0 评论 -
Qt源码解析-QTableWidget表格内容编辑有影子
QTableWidget中编辑状态时,以前的数据还是在背后显示。双击编辑的时候,删除掉以前的内容,但是还是显示在里面,影响后面输入的显示。使用原始的QTableWidget测试,并没有这个问题,博主分析了所有的QSS配置,最后定位是某一条QSS配置问题。查看Qt官方说明:使用背景色依然会出现此类问题。原创 2022-10-10 11:27:55 · 1102 阅读 · 4 评论 -
Qt 子类窗口不继承父类窗口qss设置方法
设置Qt子窗口不集成父类窗口。方法一:在QSS中配置更合适的表述是,想让某一类子窗口中所有的组件都是另外的一种QSS设置。采用第三种设置方法 由于红色似乎是我们最喜欢的颜色,让我们通过设置以下应用程序范围的样式表将QLineEdit中的文本变为红色: QLineEdit { color: red } 但是,我们希望通过将 QLineEdit 显示为灰色来直观地指示QLineEdit是只读的: QLineEdit { color: red } QLineEdit [ rea原创 2022-03-19 09:54:18 · 4879 阅读 · 0 评论 -
Qt源码解析3-信号和槽机制-QMetaType(qRegisterMetaType、Q_DECLARE_METATYPE、qMetaTypeId)
Qt源码解析 索引目录Qt源码解析 索引类QMetaType辅助类QtMetaTypePrivate成员函数qMetaTypeId成员函数type成员函数create成员函数destroy相关宏Q_DECLARE_METATYPE相关非成员函数qRegisterMetaType类QMetaType该类用作在 QVariant 以及排队的信号和槽连接中编组类型的帮助程序。它将类型名称与类型相关联,以便可以在运行时动态创建和销毁类型。使用 Q_DECLAR原创 2022-03-17 18:50:41 · 2586 阅读 · 0 评论 -
Qt源码解析3-信号和槽机制-QMetaType 知道你的类型
Qt源码解析 索引目录Qt源码解析 索引Qt源码解析3-信号和槽机制-QMetaType 知道你的类型1 为什么 Qt 需要运行时动态类型信息?2 QMetaType 保留了哪些信息?3 它是如何工作的?4 自动注册5 研究Qt源码解析3-信号和槽机制-QMetaType 知道你的类型QMetaType 是 Qt 获取有关您的类型的运行时动态信息的方式。它支持诸如自定义类型的 QVariant 包装、排队连接参数的复制等。如果您想知道做什么Q_DECLARE_原创 2022-03-17 15:25:49 · 2086 阅读 · 0 评论 -
源码解析6-系统封装-QLibrary源码分析
Qt源码解析 索引调用示例 QLibrary myLib("mylib"); typedef void (*MyPrototype)(); MyPrototype myFunction = (MyPrototype) myLib.resolve("mysymbol"); if (myFunction) myFunction();调用堆栈以主要的resolve为例 QFunctionPointer QLibrary::resolve(const char *...原创 2022-03-11 17:35:50 · 850 阅读 · 0 评论 -
Qt源码解析-QCefView编译
Qt源码解析 索引环境配置1. CMake:最低要求版本为3.19.1,推荐使用最新版本2. QtQCefView是基于Qt框架的,同时支持Qt 5.x和6.x版本。安装Qt之后请确保设置了QTDIR环境变量,使其指向Qt工具链目录,例如:Windows平台:set QTDIR=C:\Qt\6.2.2\msvc2019_64macOS平台:export QTDIR=/usr/local/Cellar/qt5/5.4.1/clang_64Linux平台:exp原创 2022-03-09 10:36:05 · 2159 阅读 · 0 评论 -
Qt源码解析2---外部程序嵌入到Qt进程界面
Qt源码解析 索引Qt程序开发时经常需要启动外部程序,这个通常使用QProcess挺好解决的。还有一种情况时需要启动外部程序,并嵌入到我们开发的Qt程序中,这样系统看起来更像一个整体。例如我们使用Visual studio开发或者qt开发windows应用程序,想嵌入Windows附带的计算器(calc.exe)或者已有的第三方的应用软件。从windows程序角度看。可以将calc嵌入到您自己的应用程序中,但它仍然可以在它自己的进程空间中运行. UAC可能还会施加一些限制,但这取决于计算方法的推原创 2022-02-25 17:13:57 · 4726 阅读 · 8 评论 -
Qt源码解析5-对象模型
Qt源码解析 索引标准 C++ 对象模型为对象范例提供了非常有效的运行时支持。但它的静态性质在某些问题领域是不灵活的。图形用户界面编程是一个需要运行时效率和高度灵活性的领域。Qt 通过将 C++ 的速度与 Qt 对象模型的灵活性相结合来提供这一点。Qt 将这些特性添加到 C++ 中: 一种非常强大的无缝对象通信机制,称为信号和槽 可查询和可设计的对象属性 强大的事件和事件过滤器 用于国际化的上下文字符串翻译 复杂的间隔驱动计时器,可以在事件驱动的 GUI原创 2022-01-22 10:22:10 · 537 阅读 · 0 评论 -
Qt源码解析4-事件系统-事件循环原理源码分析
Qt源码解析 索引走读源码,从走读的最简单的测试程序为切入点。开始分析事件的exec执行函数。int main(int argc, char *argv[]){ QApplication a(argc, argv); ... return a.exec();}.... 表示 省略的代码段1、QApplication::exec进入主事件循环并等待,直到调用exit(),然后返回设置为exit()的值(如果通过quit()调用exit(),则值 为0)。...原创 2022-01-21 11:35:04 · 1378 阅读 · 0 评论 -
Qt源码解析4-事件系统
Qt源码解析 索引在Qt中,事件是由抽象类QEvent派生而来的对象,它表示应用程序内部发生的事情或应用程序需要知道的外部活动的结果。QObject子类的任何实例都可以接收和处理事件,但它们与小部件特别相关。本文档描述了在典型应用程序中如何交付和处理事件。1、如何传递事件当一个事件发生时,Qt 通过构造一个适当的QEvent子类的实例来创建一个事件对象来表示它,并通过调用它的event()函数将它传递给一个特定的QObject实例(或其子类之一) 。该函数不处理事件本身;根据传递的事件类型,原创 2022-01-19 20:19:37 · 652 阅读 · 0 评论 -
Qt源码解析3-信号和槽机制-展开式分析
Qt源码解析 索引目录Qt源码解析 索引1、源代码2、展开式3、信号槽的展开4、OBJECT宏的展开1、源代码class QtSingalSlotTest : public QWidget{ Q_OBJECTpublic: QtSingalSlotTest(QWidget *parent = Q_NULLPTR);signals: void mySignal(); void mySingal1(int ); void m...原创 2022-01-17 13:37:33 · 936 阅读 · 0 评论 -
QTableWidget表头交叉位置角按钮的QSS配置
QTableWidget表头的QSS配置QTableView QTableCornerButton::section{background:gray;}原创 2021-12-30 16:19:31 · 1234 阅读 · 0 评论 -
Qt源码解析3-信号和槽机制
Qt源码解析 索引1、MOCmoc介绍Q_OBJECT,SLOT,SIGNAL,emit, Q_INVOKABLE等宏是Qt扩展的语法,它们其实定义在qobjectdefs.h中,编译时被moc展开。总结:Moc可以理解位是一个C++预处理程序 ,作用就是把Q_OBJECT SIGNAL Q_INVOKABLE等宏展开,并保存类中特定函数(signals,slots标签下的函数及Q_INVOKABLE修饰的函数等)的信息,创建函数的回调。文章中描述的类型用*号或者X代替。2、MOC生原创 2021-12-28 19:27:55 · 869 阅读 · 0 评论 -
Qt源码解析2---窗口程序GUI入口函数
Qt源码解析 索引Qt程序在window下的入口源码qt-everywhere-src-5.13.2\qtbase\src\winmain\qtmain_win.cpp#if defined(QT_NEEDS_QMAIN)int qMain(int, char **);#define main qMain#elseextern "C" int main(int, char **);#endif/* WinMain() - Initializes Windows and .原创 2021-12-23 10:57:10 · 1424 阅读 · 0 评论 -
Qt源码解析1---D指针原理
D指针什么是d指针如果你已经看过到Qt源文件像QLablel,QPicture QLabel::picture() const{ Q_D(const QLabel); if (d->picture) return *(d->picture); return QPicture();}你会发现总体不时含有Q_D和Q_Q宏。本文揭示了这些宏的用途。该Q_D和Q_Q宏是一个设计模式的一部分被称为d-指针(也称为不透明的指针)其中一个库的实...原创 2021-12-22 16:47:46 · 1984 阅读 · 0 评论 -
Qt源码解析 准备Windows编译源码
@[TOC](文章目录)1、准备下载源码与开发环境安装2、编译3、走读源码原创 2021-12-20 17:32:36 · 473 阅读 · 0 评论 -
Qt源码解析0 Qt源码解析所有文章索引
基础知识:信号与槽机制(使用信号槽原因) 元对象系统(The Meta-Object System ) 使用MOC ---Using the Meta-Object Compiler (moc) Qt Core源码解析:工具Qt Designer手册实践: QT在VS下的配置 ...原创 2021-06-30 17:55:01 · 1585 阅读 · 0 评论 -
QProcess :: startDetached在启动cmd.exe外部程序没有弹出窗口
不放自己的工程了,找到一个官网测试的案例。目前反应的是5.7.1可以使用,5.8以后,5.12等版本反应不再支持弹出窗口#include <QApplication>#include <QProcess>#include <QPushButton>void startProcess(){ QProcess p; p.startDetached("C:\\WINDOWS\\system32\\cmd.exe", .原创 2021-03-12 15:40:07 · 5010 阅读 · 1 评论 -
QTextCodec::codecForName导致的乱码
QTextCodec::codecForName导致的乱码遇到好几次了,每次都花费大量时间取查找,很坑,记录如下:在空电脑上部署,一部分是正常显示,一部分是乱码显示。安装完开发环境又好了。从乱码处分析后,发现QTextCodec::codecForName(“GBK”)返回空值,原因是未正常加载中文插件使用addLibraryPath函数来修改插件加载位置QString sPath = QString("./plugins/");a.addLibraryPath(sPath);.原创 2021-02-03 10:21:05 · 1706 阅读 · 0 评论 -
Qt基础---模型/视图编程MVC
模型/视图编程模型/视图编程简介Qt包含一组项目视图类,这些项目视图类使用模型/视图架构来管理数据及其向用户呈现方式之间的关系。此体系结构引入的功能分离为开发人员提供了更大的灵活性,可以自定义项目的表示形式,并提供标准的模型界面,以允许将各种数据源与现有项目视图一起使用。在本文档中,我们对模型/视图范式进行了简要介绍,概述了所涉及的概念,并描述了项目视图系统的体系结构。解释了体系结构中的每个组件,并给出了示例,这些示例显示了如何使用所提供的类。模型/视图架构模型视图控制器(MVC)是一原创 2021-01-14 19:38:23 · 383 阅读 · 0 评论 -
QT布局:qlabel距离最上面的窗口总是有距离;QTabWidget布局
Qt布局遇到一个问题,Qlabel放在最上面,浏览时标题总是很大,而下面的不变。感觉布局没有生效。原因:QLineEdit/QComboBox 放上去之后默认垂直布局默认都是Fixed,修改即可原创 2021-01-12 16:58:43 · 1446 阅读 · 0 评论 -
Qt实现浏览组合窗口效果
博主想实现一个组合浏览窗口,窗口中可以是组合的信息,可以放图片等标题原创 2020-12-31 17:24:04 · 308 阅读 · 0 评论 -
Qt基础之-UI用户界面--User Interfaces
Qt具有创建用户界面的多种技术。虽然可以根据需要混合和匹配这些不同的技术,但是一种方法通常比其他方法更适合于某种类型的用户界面。 Qt Creator是结合了传统Qt小部件和Qt Quick的应用程序的一个很好的例子。小部件构成用户界面的基础,而Qt Quick则用于实现“欢迎”模式。以下各节简要介绍了用于创建用户界面的可用技术,并提供了一个比较表来帮助选择最合适的技术。常见的重要UI主题高DPI显示QML应用程序的重要UI主题QML中的视觉类型 在QML中响应用户输入 QML中的动画 在QM原创 2020-09-24 19:28:57 · 892 阅读 · 0 评论 -
高DPI显示---High DPI Displays
与标准DPI显示器相比,高DPI显示器具有增加的像素密度。像素密度以每英寸点数(DPI)或每英寸像素数(PPI)度量,并由显示像素的数量及其大小确定。因此,仅像素数量不足以确定显示器是否属于高DPI类别。4K显示器具有固定数量的像素(〜8M),但是其DPI在185(23英寸)和110(40英寸)之间变化。前者大约是标准96 DPI桌面分辨率的两倍;后者几乎不超过该分辨率。高DPI带来的挑战高DPI显示给现有应用带来了一些挑战:使用具有固定坐标的UI设计的应用程序看起来很小 以点为单原创 2020-09-24 19:25:15 · 2834 阅读 · 0 评论 -
Qt资源系统(The Qt Resource System)
Qt资源系统是一种与平台无关的机制,用于在应用程序的可执行文件中存储二进制文件。如果您的应用程序始终需要一组特定的文件(图标,翻译文件等),并且您不想冒丢失文件的风险,这将很有用。资源系统基于qmake,rcc(Qt的资源编译器)和QFile之间的紧密合作。资源收集文件(.qrc)与应用程序关联的资源以.qrc文件指定,.qrc文件是一种基于XML的文件格式,该文件格式列出了磁盘上的文件,并且可以选择为它们分配一个资源名称,应用程序必须使用该资源名称来访问该资源。这是一个示例.qrc文件:&l.原创 2020-09-24 19:01:31 · 1918 阅读 · 0 评论 -
Qt基础--用户界面编译器 --- User Interface Compiler (uic)
本页记录了Qt Widgets模块的用户界面编译器。 uic读取Qt Designer生成的XML格式用户界面定义(.ui)文件,并创建相应的C ++头文件。用法:uic [选项] <uifile>选项下表列出了uic可以识别的命令行选项。选项 描述 -o <file> 将输出写入<file>而不是标准输出。 -tr <func> 使用<func>而不是tr()来翻译字符.原创 2020-09-24 17:44:24 · 1463 阅读 · 0 评论 -
对象树和所有权(Object Trees & Ownership )
总览QObject将自己组织在对象树中。当您创建一个以另一个对象作为父对象的QObject时,它将被添加到父对象的children()列表中,并在父对象被删除时被删除。事实证明,这种方法非常适合GUI对象的需求。例如,QShortcut(键盘快捷方式)是相关窗口的子级,因此,当用户关闭该窗口时,快捷方式也会被删除。QQuickItem是Qt Quick模块的基本视觉元素,它继承自QObject,但是其视觉父级的概念与QObject父级的不同。项的视觉父项不一定与它的对象父项相同。有关更多详细信息,请参见原创 2020-09-24 17:26:02 · 376 阅读 · 0 评论 -
Qt基础---对象模型(Object Model )
标准的C ++对象模型为对象范例提供了非常有效的运行时支持。但是它的静态性质在某些问题领域是不灵活的。图形用户界面编程是一个既需要运行时效率又需要高度灵活性的领域。 Qt通过结合C ++的速度和Qt对象模型的灵活性来提供此功能。Qt将这些功能添加到C ++中:一种非常强大的无缝对象通信机制,称为信号和槽 可查询和可设计的对象属性 强大的事件和事件过滤器 上下文字符串翻译以实现国际化 先进的间隔驱动计时器,使许多任务可以优雅地集成到事件驱动的GUI中 分层且可查询的对象树,以自然方式组织对象所原创 2020-09-24 17:20:18 · 2960 阅读 · 0 评论 -
Qt基础---属性制度(The Property System)
Qt提供了一个复杂的属性系统,类似于某些编译器供应商提供的属性系统。 但是,作为与编译器和平台无关的库,Qt并不依赖非标准的编译器功能,例如__property或[property]。 Qt解决方案可在Qt支持的每个平台上与任何标准C ++编译器一起使用。 它基于元对象系统,该元对象系统还通过信号和插槽提供对象间通信。声明属性的要求若要声明属性,请在继承QObject的类中使用Q_PROPERTY()宏。Q_PROPERTY(type name (READ getFunct原创 2020-09-24 16:55:15 · 797 阅读 · 0 评论 -
Qt基础---元对象系统(The Meta-Object System )
Qt的元对象系统提供了对象间通信,运行时类型信息和动态属性系统的信号和时隙机制。元对象系统基于三件事:QObject类为可以利用元对象系统的对象提供了基类。 类声明的私有部分内的Q_OBJECT宏用于启用元对象功能,例如动态属性,信号和槽。 元对象编译器(moc)为每个QObject子类提供实现元对象功能所需的代码。moc工具读取C ++源文件。如果它找到一个或多个包含Q_OBJECT宏的类声明,它将生成另一个C ++源文件,其中包含每个这些类的元对象代码。生成的源文件或者包含在类的源文件中,或原创 2020-09-24 10:37:01 · 2126 阅读 · 0 评论 -
Qt Core
核心功能使用模块用CMake构建用qmake构建线程和并发编程输入/输出,资源和容器其他框架QT Core核心功能Qt Core将以下功能添加到C ++:一种非常强大的无缝对象通信机制,称为信号和时隙 可查询和可设计的对象属性 层次化和可查询的对象树 使用受保护的指针(QPointer)以自然的方式拥有对象所有权 跨库边界的动态转化以下页面提供有关Qt核心功能的更多信息:元对象系统 属性系统 对象模型 对象树和所有权 信号和插槽...原创 2020-09-24 09:55:43 · 621 阅读 · 0 评论