转自:http://www.tuicool.com/articles/qmI7Bf 故事的背景是这样的,我们在写QT程序的时候或者在开始写QT程序之前总会看到这样的语句 QApplication app(argc, argv); 这是什么呢? QApplication这个类是继承QCoreApplication的,而QCoreApplication有继承 QObject的,而QObject就是QT中最基本的基类,也就是QT的根基了,这里就从QCoreApplication 说起吧,头文件中有这样…
在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度. 1.QObject类的定时器 QObject是所有Qt对象的基类,它提供了一个基本的定时器.通过QObject::startTimer(),可以把一个一毫秒为单位的时间间隔作为参数来开始定时器,这个函数返回一个唯一的整数定时器的标识符.这个定时器开始就会在每一个时间间隔"触发",直到明确的使用这个定时器的标识符来调用QObje…
------------恢复内容开始------------ QCoreApplicationPrivate 会取得current thread; 在windows平台创建TLS变量,记录线程信息,并将此线程记录为主线程.交由QCoreApplicationPrivate::theMainThread维护. QThreadData *QThreadData::current(bool createIfNecessary) { qt_create_tls(); QThreadData *threa…
sleep()//秒 msleep()//毫秒 usleep()//微秒 以前为了模拟鼠标点击用过这些函数,可以让进程中断,今天发现我原来的做法其实不对.这组函数会将你当前的线程/进程变为“睡眠”状态. 这个“睡眠”是深度意义的睡眠, 睡眠期间内核不会分配给程序时间片, 所以程序什么都不做, 更不用提界面的刷新了. 直接导致的问题就是用户无法与程序交互. 所以说直接使用sleep函数睡眠是常见的错误方案之一.另外一种更常见的错误方法是使用QTimer+死循环. 类似下面的代码: QTimer t…
note 个人理解, QListView 用于 显示数据,而数据的逻辑维护则由 QStandardItemModel 完成. QStandardItemModel 创建 if (nullptr == pchannel_list_view_model_) pchannel_list_view_model_ = new(std::nothrow) QStandardItemModel(ui->channel_list_view); QListView添加QStandardItemModel 绑定数据…
QT源码分析 转载自:http://no001.blog.51cto.com/1142339/282130 今天,在给同学讲东西的时候,谈到了Qt源代码的问题,才发现自己对Qt机制的了解是在太少了,而Qt的魅力也在于它的开源.因此,决定,从今天起,每天坚持进行1小时以上的源码分析,无论如何,不能间断. 看到那无数的工程,从什么地方开始呢?想想看,也就是从自己写的程序的运行机制作为入口点吧,希望可以窥探到一些Qt的架构知识. 所有的Qt GUI程序都是从QApplication开始的,那么我们就从…
一.前情介绍 QApplication是Qt开发中经常用到的一个类,用来管理应用程序的生命周期.跟其相关的类还有QCoreApplication和QGuiApplication,分别用于不同场景下为应用程序的控制流和事件处理提供基础的框架.这三个类的构造函数都接收两个参数(分别是argc和argv),和C/C++程序的main函数的参数差不多.因此,大部分情况下我们是直接将main函数的这两个参数传给QApplication(这里以GUI程序为例): #include <QApplication…
Qt中的每个类,都有一个对应的同名头文件,其中包含其类定义.例如要使用QApplication类,则需要在程序中添加" #include <QApplication>"   QApplication类用于管理应用程序范围内的资源.其构造函数需要main函数的argc和argv作为参数.   widget被创建时都是不可见的(always created hidden).widget中可容纳其它widget.   Qt中的widget在有用户行为或状态改变时会emit sig…
原文:http://blog.csdn.net/michealtx/article/details/6866094 初学Qt,用了Qt自带的事件,然后想怎么才能定义自己的事件呢?又如何使用自定义事件呢?看了篇文章,说先要子类化QEvent,然后定义自己的QEvent::Type,然后重写QWidget::event()函数,然后就可以调用QCoreApplication::sendEvent()或者QCoreApplication:;postEvent()发送事件就好了.但我比较笨,还是云山雾罩…
简述 在Qt中,事件就是对象,派生自QEvent抽象类,用来表示在应用程序中发生的事件,或是应用程序需要处理的外部活动产生的事件. Events可以被任何QObject派生的子类实例对象接收和处理,但它们是关联到特定控件的.下面,我们主要介绍event在典型应用程序中是如何发送及处理的. 简述 事件如何发送 事件类型 事件处理程序 事件过滤器 发送事件 事件如何发送 通常情况下,当一个事件发生时,Qt通过构造一个合适的QEvent子类对象来表示事件的发生,然后通过调用event()函数,将该事件…