QT源码解析笔记

  

1. QT如何绘制控件的
  QT的绘制控件在QStyleSheetStyle::DrawControl里面,这里会调用默认的QSS来绘制效果

2. 在设置一次QSS以后,将会触发polish事件,里面将会一次设置大小,pallte和property等属性,在QWidget::event里面的polish事件的处理可以看出来 (在QWidget::Event里面会调用QStyleSheetStyle::polish)

3. 如何设置hover这些伪状态的变化:
  1. polish事件处理的时候通过设pattle来设置
  2. 在StyleSheet里面计算renderrule的时候

4. QT 是在哪里解析QSS的:
  在styleChange里面会触发解析QSS的代码,具体在:
  QVector<QCss::StyleRule> QStyleSheetStyle::styleRules

  styleSheetCaches里面会保存所有的qss的解析代码,在qstylesheetstyle.cpp里面的静态变量
  并且站styleRules的代码里面,会遍历所有的父亲拿到父亲的qss,然后查看是否有设置到自己的qss

  polish是根据解析后的stylesheet将对应的数值复制到对应的widget属性里面

5.d->inheritStyle()将会在调用setParent的时候调用,或者在QWidget::setStyleSheet里面有传播的选项,会将style往下传递(这里是针对style的,而StyleRule则是针对属性的)

  QWidgetPrivate::propagatePaletteChange
  这个函数会将palette往下传递

6. qt绘制控件是在qwidget.cpp里面的drawWidget里面的,将会递归绘制所有的控件,此函数是通过QEvent::UpdateRequest来调用的

7. QWidgetPrivate::paintSiblingsRecursive 在这里将会发送绘制事件给子控件,然后子控件的paintEvent负责绘制

QTextStream
QTextStream里面 fillReadBuffer有一个codec

QGraphics Framework
SceneRect 返回的是当前所有元素的boundRect,比如我加入一个text,位置在0, 0, 74, 22, 则sceneRect会返回0, 0 , 74, 22
加入我们又加入一个text2, 位置在100, 100,则SceneRect则会是0, 0, 174, 122 (text宽度为74, 22)

如何判断MousePress一个Item
cachedItemsUnderMouse: 利用item的boundRect计算出与鼠标位置组成的矩阵是否有intersect,然后利用shape()调用的函数与鼠标的矩形进行intersect,如果有话则代表有点击到

当Select一个Item以后,如何取消Select:
当Press以后,将会取消所有的item的select,然后再进行判断是否select

select以后,事件传递机制有什么变化

按钮设置为mask以后,如何只判断点击到mask里面
利用QRegion


QT的信号传输机制

同一个线程,同步传输

不同的线程,异步传输

 

转载于:https://www.cnblogs.com/linyilong3/p/11012718.html

Qt Creator的源码解析可以帮助你深入了解Qt Creator的内部实现和工作原理。在进行源码解析之前,建议你熟悉C++语言和Qt框架的基础知识。 Qt Creator的源码托管在Git上,你可以通过以下步骤获取源码: 1. 克隆Qt Creator的Git仓库: ``` git clone https://code.qt.io/qt-creator/qt-creator.git ``` 2. 进入源码目录: ``` cd qt-creator ``` 3. 安装构建依赖: ``` qmake -r make ``` 一旦你成功地获取了Qt Creator的源码,你可以使用任何你喜欢的编辑器或IDE来浏览和分析源代码。这里有一些你可以开始探索的关键部分: 1. Qt Creator的主要入口点是`src/qtcreator.pro`文件,它定义了项目的结构和构建配置。 2. `src/app/main.cpp`文件包含了Qt Creator的主要入口函数,在这里进行了一些初始化操作,然后启动了Qt Creator的应用程序。 3. `src/plugins`目录包含了Qt Creator的插件,这些插件提供了丰富的功能和工具。你可以深入研究这些插件的源码,了解它们是如何实现的。 4. `src/libs`目录包含了Qt Creator使用的一些核心库,如代码编辑器、调试器、可视化设计工具等。你可以深入研究这些库的源码,了解它们的内部实现和交互方式。 5. `src/shared`目录包含了一些共享的代码和工具类,它们被多个部分使用。你可以查看这些代码,了解它们是如何被重用和共享的。 在进行源码解析时,你可能会遇到一些挑战,因为Qt Creator是一个复杂的项目。阅读官方文档、参考示例代码以及与社区进行讨论都是非常有帮助的。同时,使用调试器来跟踪代码执行流程也是一个很好的学习方法。 希望这些信息对你进行Qt Creator源码解析有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值