对QT的理解

我的理解:

QT做应用软件可以很强大,界面足够漂亮(最有意思的是QSS,让我刮目相看),应该是足够了。同时QT也提供了源码,不过超级复杂,难以理解,所以还是无法深入底层。另外它提供了一个额外的好处,就是MAC软件编程不用学COCOA这些太偏门的框架和语言。工作机会不算多但也不算少,总体来说,值得一学。

但是学习和使用了这么久Windows编程,不仔细学习直接处理消息和申请使用内存等特点(而不是把相关内容托管给语言或者框架),那样的话,就只能停留于开发应用软件层,无法做到知其然和所以然。所以必须学习MFC,才可以随心所欲的掌控Windows下的一切资源。但现在MFC的工作机会有点少,因为一方面在应用开发层可替代的语言太多,尤其是C#和VB,当然还有Delphi,另一方面MFC本身太复杂,也不够现代化,杀鸡用牛刀,学习和招人的成本都很高,不清楚维护项目的成本高不高。我只能说MFC是深入学习和理解C++/面向对象/COM/Windows消息/Windows底层/开发驱动和超难工具的一个好东西,否则就是没用。对于我个人而言,C++基础已经很强了,消息机制也理解的不错了,为什么不顺带深入研究一把呢?虽然它不能立刻带来产品开发上的好处。何况MFC尽管落后,但也是大师们创造和实现的,对于我这样一个没有能力实现同等框架的小白来说,必然还是有许多可学之处的。所以MFC必须学,没有选择。

-----------------------------------------------------------------------------

不用考虑、、直接Qt、、拖控件有Qt Designer,简单界面就可以搞定了、、复杂的自己代码组合、、、图表展示可以用qwt、、时尚个性或者移动端用有qml、、现在去学MFC、、十几年前的东东,微软都放弃的货、、、Qt开发,一般程序基本不用了解平台特性、、MFC又必须了解win的消息机制,代码还都是宏那么难看,变量类型折腾的都认不出来、、程序也没有一点平台移植性、、选哪个不言而喻啊、、、
而且现在Qt是一整套框架了、、话说拿MFC或者GTK和Qt比,一定程度都小看Qt、、

http://www.zhihu.com/question/19938661

-----------------------------------------------------------------------------

时间: 2024-11-07 13:35:40

对QT的理解的相关文章

QT界面 理解QStyle和QStyleOption以及QStyleFactory

QStyleOption类和QStyle类简介 QStyleOption类存储QStyle函数使用的参数.QStyleOption及其子类包含了QStyle函数绘制图形元素所需的所有信息. 由于性能原因,成员函数很少,并且对成员变量的访问是直接的(即.,使用.或- >操作符).这种低级的感觉使结构易于使用,并强调这些只是样式函数使用的参数. QStyle函数的调用者通常在堆栈上创建QStyleOption对象.结合Qt对QString.QPalette和QColor等类型的隐式共享的广泛使用,可

Qt 代码: 子窗口调用父窗口(其实就是用指针直接访问)

之前的 Qt 编程大多只涉及简单的多窗口,并未染指窗口间的传值交互,想来还是“涉世未深”,对 Qt 的理解.应用还需殷勤努力. 这次的问题是这样的,我想要实现一个类似QQ.阿里旺旺的聊天客户端,在弹出表情对话框后,能够选择表情并返回给聊天窗口的消息输入框,这就需要两个窗口之间的传值交互. 首先想到的解决方法自然是使用Qt自带的signal/slot机制.即首先发信号给父窗口,父窗口接到信号执行槽函数发送一个携带所需数据的信号给子窗口.但是疑问来了:要在子窗口中接收到父窗口的信号必须进行signa

QT之深入理解QThread

QT之深入理解QThread 理解QThread之前需要了解下QThread类,QThread拥有的资源如下(摘录于QT 5.1 帮助文档): 在以上资源中,本文重点关注槽:start():信号:started().finished():受保护的方法:run().exec(): 理解QThread QThread与通常所熟知的线程(thread)有很大出入,在面向过程的语言中,我们建立一个线程的同时会传入一个函数名,这个函数名代表该线程要执行的具体代码(如图 1 所示). 图 1. 我们通常所理

Qt之QThread(深入理解)

简述 前面,我们介绍了QThread常用的两种方式: worker-object 子类化QThread 下面,我们首先来看看子类化QThread在日常中的应用. 简述 子类化QThread 在主线程中更新UI 正常结束线程 更多参考 一般情况下,QThread进行耗时操作的同时会与UI进行交互,比如:显示进度.旋转等待...进行友好型的交互,让用户知道当前的操作. 子类化QThread 我们以更新进度条为例,来模拟一个耗时操作,并分享我们有可能在此过程中遇到的问题及解决办法. 首先,我们定义一个

对qt多线程以及事件投递的理解

用QThread启动线程的良好方法以及理解. 1) 用原始的QThread的started信号触发自定义的slot启动线程,而不是派生QThread的类重载run函数启动线程. 将一个类派生自QObject,然后实现所有的signal/slot,然后通过调用movetothread函数来使他们执行在新的线程里面,而不是每次都要重新派生QThread,并且派生QThread的另外一个不好的地方是只有run函数内部的代码才会执行在新线程里面,相比起来,派生QObject并使用movetothread

QT之QSignalMapper(可以理解为转发器,多个按钮绑定到一个Edit上,且能分辨。每个单独连接的话,反而麻烦)

QT之QSignalMapper QT之QSignalMapper 简述 效果图 上代码 相关知识点文章 结尾 简述 QSignalMapper我们可以理解为转发器,此话怎讲呢?比如,按钮点击的响应槽,绑定到QSignalMapper上,QSignalMapper收到按钮的点击后,又通知到另外的控件上做处理.有的朋友会问了,为什么要这么麻烦,需要转一手,不能去掉中间的QSignalMapper,而直接调用吗.答案当然是可以的,为什么需要QSignalMapper这个转发器呢,我们先来看下效果,然

Qt Model/View理解(二)---构造model(细心研读,发现超简单,Model就是做三件事:返回行数量、列数量、data如何显示。然后把model与view联系起来即可,两个例子都是如此)good

数据是一个集合,显示也是一个集合.例如一篇<西游记>的文章,所有的文字就是数据集合,展示方式就是显示的集合,可以以书本的形式,也可以以电纸书的形式,更可以用视频的方式展现. 下面是将一个二维数组中的数据显示到TableView控件中. 1.声明一个model类,继承于QAbstractTableModel #define ROW 3#define COL 2 class TableModel : public QAbstractTableModel{ Q_OBJECTpublic: Table

QT中的线程与事件循环理解(2)

1. Qt多线程与Qobject的关系 每一个 Qt 应用程序至少有一个事件循环,就是调用了QCoreApplication::exec()的那个事件循环.不过,QThread也可以开启事件循环.只不过这是一个受限于线程内部的事件循环.因此我们将处于调用main()函数的那个线程,并且由QCoreApplication::exec()创建开启的那个事件循环成为主事件循环,或者直接叫主循环.注意,QCoreApplication::exec()只能在调用main()函数的线程调用.主循环所在的线程

Qt的“undefined reference to `vtable for”错误解决(手动解决,加深理解)

使用QT编程时,当用户自定义了一个类,只要类中使用了信号或槽. Code::Blocks编译就会报错(undefined reference to `vtable for). Google上有很多这个问题的回答,但很多说的很模糊,或者根本就不可行. 其实,QT有自己的编译方法. 不用IDE写一个类,QT的编译步骤是: 1, cd 源代码目录 2, qmake -project 3, qmake project_name.pro 4, make (如果你装的是minGW的话,就用minGW-mak