Qt编程是干什么的啊!要用什么编译器!

Qt编程是干什么的啊!要用什么编译器!,第1张

Qt工具包是一个完整封装的C 类库(可以类比MFC?),并且使用“一次编写,随处编译”的方式,可用于构建多平台图形用户界面。

Qt程序的编译可以使用VC,Borland C ,MinGW等多种编译器。Qt程序最主要的特性是独有的“信号和槽”的强大机制。

Qt使程序员通过使用一个单一源程序来构建跨平台的应用程序。该应用程序可以运行在windows、Mac os X、Linux、Solaris、HP-UX和其他使用X11的Unix版本。Qt的嵌入式版本Qt/Embedded可以应用于WinCE和嵌入式Linux,它和桌面版本具有相同的应用程序编程接口。此外还有应用于网页脚本的Qtpia。

Adobe PhotoShop Album就是一个Qt编写的面向大众的市场的Windows应用程序例子之一。

在Qt中使用多线程,目前就我使用过的有两种,一是子类化QThread,重写run函数,在run函数里实现自己的代码,这一部分代码通常是比较耗时,或者干脆直接阻塞的。比如一个while循环,设置一个标志,判断循环结束。

这样的例子在网上有很多,就不写了。

这样写的话,会有一些东西需要了解。

子类化QThread的方法,只有run函数里面的内容是执行在子线程里的,其他的部分,比如槽函数什么的还是在主线程里执行(假设是在主线程开启的该子线程)。

还有一种方法,是子类化QObject,新建一个线程,然后使用MoveToThread把这个类的对象移到新建的线程中,这种做法使得它所有的槽函数都是执行在新开辟的线程里面。

如果直接(QObject对象).abc()的话,这个成员函数是在主进程内执行,可能会出现"QObject::killTimer: timers

cannot be stopped from another thread"的运行错误。

使用第二种方法的话,貌似会遇到这样的问题:如果在一个槽函数中把子线程阻塞,其他的槽函数无法接受来自主线程


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7715673.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存