首页| 论坛| 消息

回复: 说说Qt与C++ Builder的一些区别
#6 回 小韩老师 的帖子 [ustone 11-26 12:54]
小韩老师:非要对比的话,你应该将Qt中的QEvent(消息),与MFC中的消息Msg归于一类。信号不是消息,你可以将信号看作高一层次的抽象,消息的使用总是不是那么灵活。 (2018-11-25 22:27) 
VCL的事件和Qt的信号用法很像。。
#7 回 ustone 的帖子 [圣域天子 11-26 22:45]
ustone:
事件窗口如图。。和属性窗口分为两个标签页。 (2018-11-26 12:52) 
对啊,我说的就是这个
换而言之,当你没有安装CB的IDE时,要从.dfm去看事件的对应关系了,而不是.cpp中
#8 回 圣域天子 的帖子 [ustone 11-27 11:57]
圣域天子:
对啊,我说的就是这个
换而言之,当你没有安装CB的IDE时,要从.dfm去看事件的对应关系了,而不是.cpp中

头文件中也可以看,三者是对应的:
class TForm1 : public TForm
{
__published:// IDE-managed Components
TButton *btnOpen;
TButton *btnStop;
void __fastcall btnOpenClick(TObject *Sender);
void __fastcall btnStopClick(TObject *Sender);
private:// User declarations
public:// User declarations
__fastcall TForm1(TComponent* Owner);
__fastcall ~TForm1();
};
#9 [stlcours 11-27 17:35]
QT类库与Delphi VCL类库的体系结构对比——两者十分类似!
今天在看QT对象内存管理的一篇文章时:
http://blog.csdn.net/dbzhang800/article/details/6300025
想到了一个问题:就是QT类库体系结构与Delphi类库体系结构的对比问题。从它们都有parent属性,而且都可以管理子控件的内存释放,就可以猜测两者的体系结构十分相似。以下是我的过程,就把它当自己对Qobject和QWidget的一个熟悉过程吧。
---------------------------------------------------------------------------
先看它们的继承体系:
Delphi的TApplication->TComponent->TPersistent->TObject
QT的QApplication->QCoreApplication->QObject
注意,它直接继承自QObject,而省略了delphi的两个层次:TComponent和TPersistent
因此特意查看了一下,QObject已经包括了setParent,非常类似于TComponent的InsertComponent(owner)
QObject的setObjectName相当于TComponent的setName。这样一来,QObject即已经包括了TComponent的主要功能。
但是QObject貌似没有TPersistent的RTTI和流入流出的功能。不过不要紧,因为C++标准里就包括了RTTI和流入流出的功能,因此不需要在类库里体现这一点,而是随时随地可用的。而Delphi因为自成一体,语言和类库结合的过于紧密,不得不单独定义一层TPersistent来提供相应的功能(也就是说,不使用VCL的object pascal是没有RTTI和流入流出功能的)。
这么说来,一个QObject就已经包括了Delphi的TObject、TPersistent和TComponent这三个类层次的功能。并且QObject还多了对signal的管理,tr的功能。
而且还有一个最大的区别是从QObject开始就处理事件的方方面面,connect,过滤,阻塞,并且专门提供了一大堆相关的附加功能。Delphi虽然也可使用Dispatch把消息发给TObject,但事实上没有人这样使用。
此外,QObject还提供了deleteLater功能,即自删除。这可是没有父类控件的情况下提供的哦~
还有一个特点:QObject竟然是从属于某个线程的,而且专门提供了2个函数:thread()和moveToThread()。而其它语言包括Delphi的Object都没有这个特征。究其原因,是因为QT把信号槽机制放在QObject级了,换而言之每个Object都可接受和处理信号,而信号是从属于某个线程的,因此QObject也就只能从属于某个线程了。这只是我的粗浅理解,不知道对不对。而且我觉得能不能把QObject的最基本服务提炼出来作为更高一层呢?这样更易于理解,也便于 ..
#10 回 stlcours 的帖子 [ustone 11-27 20:19]
stlcours:QT类库与Delphi VCL类库的体系结构对比——两者十分类似!
今天在看QT对象内存管理的一篇文章时:
http://blog.csdn.net/dbzhang800/article/details/6300025
想到了一个问题:就是QT类库体系结构与Delphi类库体系结构的对比问题。从它们都有parent属性,而且都可以管理子控件的 .. (2018-11-27 17:35) 
好,有空看下。

<< 1 2 >> (2/2)

回复 发表
主题 版块