随笔分类 -  Qt

摘要:最近一直在倒腾事件循环的东西,通过查看Qt源码多少还是有点心得体会,在这里记录下和大家分享。总之,对于QStateMachine状态机本身来说,需要有QEventLoop::exec()的驱动才能支持,也就是说,在你Qt程序打开的时候,最后一句QCoreApplication::exec()已经由内... 阅读全文
posted @ 2015-01-05 15:17 Ricky.K 阅读(8555) 评论(1) 推荐(1)
摘要:当MVC出现的时候,极大的推动了Model与View分离的潮流。然而对于一些已存在的老系统或者没有维护好的系统,你都会看到当前存在大把的巨大类----将Model,View,Controller都写在了一个widget中。一个分层良好的系统,应该将处理用户界面和处理业务逻辑的代码分开。原因如下如果你... 阅读全文
posted @ 2014-12-31 14:43 Ricky.K 阅读(1252) 评论(0) 推荐(0)
摘要:自从GDB 7.0之后,就加入了Pretty-Printer的这个概念。简单理解就是他可以让你用Python写一串脚本,然后让gdb去读取这串脚本后,可以自由的输出由你想自己定义的格式。我们直接举个简单例子:#include int main(int argc, char *argv[]){ ... 阅读全文
posted @ 2014-12-25 16:13 Ricky.K 阅读(2900) 评论(0) 推荐(0)
摘要:写下这个给自己备忘,关于事件循环以及多线程方面的东西我还需要多多学习。首先我们都知道程序有一个主线程,在GUI程序中这个主线程也叫GUI线程,图形和绘图相关的函数都是由主线程来提供。主线程有个事件循环Event Loop,其实就是一个死循环在不断的等待你的消息队列,通过消息队列完成响应用户操作,绘图... 阅读全文
posted @ 2014-12-23 19:22 Ricky.K 阅读(5410) 评论(0) 推荐(0)
摘要:有时候需要自己编译Qt Creator,需要注意的就是qmake版本的问题,比如我用4.8.1和4.8.6同样编译出来的Qt Creator在同样的qtconfig-qt4下所呈现的效果是不一样的。另外,如果下载官方预编译版的话,可以看到『关于Qt Creator』这里,他们都是用Qt 5以上的版本... 阅读全文
posted @ 2014-12-12 15:21 Ricky.K 阅读(998) 评论(0) 推荐(0)
摘要:写下这个给自己备忘,比如函数void test(int a = 0) 你在调用端如论是test(3)或者test(),都可以正确调用到这个函数。 但是,如果放到Qt中的信号槽的话,这个还是值得讲一讲的,不然的话,可能会引起相应的误会。 其实说到底,Qt在connect信号的时候,采取的方式其实是类... 阅读全文
posted @ 2014-12-08 16:54 Ricky.K 阅读(1931) 评论(0) 推荐(0)
摘要:LXPanel是Linux下LXDE项目的一个桌面面板软件。我一开始接触的时候,对于自己自定义的程序到快速启动栏绕了很多弯路,这里记录下,防止以后自己忘了。还有一点就是很多时候,panel下的应用程序列表不是最全的,这个时候你需要手动去/usr/share/applications下去查看,LXP... 阅读全文
posted @ 2014-11-24 15:50 Ricky.K 阅读(2372) 评论(0) 推荐(0)
摘要:有时候有这样的需求,比如想对全局光标进行一次setPos(),但这个时候又不想触发消息队列触发mouseMoveEvent,这个时候就可以这么做。myWidget->clearFocus(); QCursor::setPos(pos); myWidget->setFocus(); 这样在取消窗口... 阅读全文
posted @ 2014-10-23 08:46 Ricky.K 阅读(1890) 评论(0) 推荐(0)
摘要:最近项目中有一个比较奇怪的问题,就是当记录了最后的m_lastPos为当前widget中间位置之后,设置了QCursor也为当前中间位置。 这个时候当开始移动的时候,发现offset出现了很怪的极大值,后来发现,因为我的工作环境是远程机环境,所以当调用系统全局的 QCursor::setPos的时... 阅读全文
posted @ 2014-10-23 08:45 Ricky.K 阅读(231) 评论(0) 推荐(0)
摘要:在Qt中常常要自己重载一些paintEvent函数,这个时候往往忽略了两个很关键的API,那就是setViewport和setWindow。 Viewport,顾名思义,反应的是物理坐标,就是你实际想在当前坐标系下哪块区域画图,比如(50,50,100,100)的一个rect. Window而是逻... 阅读全文
posted @ 2014-10-23 08:43 Ricky.K 阅读(2713) 评论(0) 推荐(0)
摘要:比如当你Qt中用QPainter进行window和viewport,逻辑和物理坐标分离的形式进行绘图放大的时候,你会发现鼠标的移动和放大之后的图像有点不跟手,比如你是用QTransform进行放大变换,其实这个时候有个小窍门可以比较方便的解决这个 问题就是用反向的QTransform,比如前者进行v... 阅读全文
posted @ 2014-10-23 08:42 Ricky.K 阅读(566) 评论(0) 推荐(0)
摘要:网上找了下QTimeLIne类的介绍,要么就是代码一贴自己看去,要么就是说不到重点,正巧自己项目遇到这个类,在这里写一下,给需要的同学看下。 因为我最近需要有动画方面配合时间间隔触发QGraphicsView框架的需求,意外找到了一个Qt中很实用的时间类QTImeLine,现在让我们一起来学习一下... 阅读全文
posted @ 2014-10-23 08:41 Ricky.K 阅读(3755) 评论(1) 推荐(1)
摘要:最近忙活了半天发现了一个不容易发现的问题,比如我有一个父类的自定义Widget,并且自己设置了Pattle,但这个时候我如果再在当前Widget内部加入自己的widget就不能正常显示,但是加QPushButton就可以显示。 百思不得其解,我还特意让两个widget各自设置了不同的pattle,... 阅读全文
posted @ 2014-10-23 08:40 Ricky.K 阅读(3908) 评论(1) 推荐(0)
摘要:很多时候,我们在开发的时候是面对嵌入式平台,因此由于资源的限制需要用到相关的交叉编译。即在你host宿主机上要生成target目标机的程序。里面牵扯到相关头文件的切换和编译器的选择以及环境变量的改变等,我今天仅仅简单介绍下相关CMake在面对交叉编译的时候,需要做的一些准备工作。 CMake给交叉... 阅读全文
posted @ 2014-07-29 13:43 Ricky.K 阅读(57502) 评论(7) 推荐(7)
摘要:标题有点看不懂,说简单点,第一种情况就是类A与类B两个类。其中类B需要类A的一个数据,并且到A中的数据进行更改时,类B需要被通知,进行刷新修改本地保存的类A中的相关属性。懂设计模式的朋友一看就知道可以用Observe观察者模式,将类B当成观察者,类A当成被观察者。即A a;B b;a.addObs... 阅读全文
posted @ 2014-07-24 13:59 Ricky.K 阅读(1397) 评论(1) 推荐(0)
摘要:有时候需要在widget中重新setParent,但会发现setParent有时候会出现问题,比如子窗口不在刷出来等等。 其实,有一点是需要注意的,就是Qt文档里说的,如果你当前widget重新设置了parent之后,默认是invisible的。其实这个说话有点问题,因为有两种情况。 第一种情况就... 阅读全文
posted @ 2014-07-16 09:43 Ricky.K 阅读(6668) 评论(0) 推荐(0)
摘要:有时候,在写connect的时候会去犹豫一个问题----我的槽函数到底需不需要为虚函数。这个问题在我每次写connect的时候我都会反问自己,因为确实,如果你不去深究里面的moc,你发现不了太多问题。 比如有这么一个demo.#include #include #include class Tes... 阅读全文
posted @ 2014-07-10 14:39 Ricky.K 阅读(11668) 评论(1) 推荐(0)
摘要:最近接触了SCXML这个状态描述文本,简单来讲就是描述了整个状态的变迁过程的一种XML格式的表格。Qt labs中有一个项目就是QScxml,它基于QStateMachine上层制作,可以直接读取SCXML格式的文件生成内部状态对象和成员,可以直接在Qt中进行状态变迁,十分方便。 先来简单介绍一下... 阅读全文
posted @ 2014-06-25 16:44 Ricky.K 阅读(6105) 评论(1) 推荐(2)
摘要:大家都知道C++虚函数的机制,对于基类定义为虚函数的地方,子类如果覆写,在基类指针或者引用来指向子类的时候会实现动态绑定。 但如果指针去调用非虚函数,这个时候会调用C++的静态绑定,去判断当前的指针是什么类型,就去执行哪个类型的函数。 很有一种比较经典的用法,就是Template Method模式... 阅读全文
posted @ 2014-06-17 09:21 Ricky.K 阅读(2873) 评论(0) 推荐(1)
摘要:最近开始学习CMake,因为项目需求需要用到Qt,自带的qmake会出现许多问题(比如文件修改之后有时候qmake不会侦测到不会重新编译,需要手动去编译等),于是开始尝试使用CMake来编写Qt程序,顺便学习一下怎么用CMake来使用find_package,也算给自己一次学习的机会。 切入正题,... 阅读全文
posted @ 2014-06-17 09:05 Ricky.K 阅读(8508) 评论(0) 推荐(0)