这个不是常识么,一直就是这样的
我发现把code completion和error insight关掉仍然可以有提示,你可以试试。
就是因为Delphi、CB的代码提示使用了更复杂的技术才导致对硬件要求高啊,比如它能随时显示出某个符号在哪个文件的哪行哪列,没有源程序的.dcu、.obj/.lib也能提示出符号信息。基本上同一时期的Delphi、CB都比VS对硬件要求高,我记得上学时期我自己的破电脑赛扬800+256MB RAM用Delphi7就有点卡,用VC6则很流畅,用学校的Pentium4 2.6+1GB RAM,D7也很流畅了。 从Win95 OSR2开始,windows都是自带DirectX的,不过我印象winxp最初自带的是DX 8.1,sp3中才升级到DX9。
我不反对别人学Qt,实际上我也看一下Qt的开源代码,我只是认为在非Linux上,尤其是windows上,用Qt做GUI是非常错误的选择,如果商业项目这么做,肯定是要付出代价的。 我原来认为微软收购Skype之后,会用自己的工具改写,刚才看了一下电脑上安装的Skype,2017-08-25发布的7.40.99.103,仍然是用Delphi编译的:
我感觉Qt的架构设计比较拙劣,如果不在Linux上做GUI应用的话,没必要浪费太多时间研究它,Skype的开发者曾痛骂过Qt纯属垃圾,因为他们当初曾经想一套GUI多平台,后来还是只在Linux上保留Qt版本。
特殊的命名规则的话,不需要你写connect的。例如:按钮的signal-slot.当然如果你的slot命名规则是自己的格式,你就得显式去connect.具体的可以不用显式连接(其实是moc帮你做了)slot函数格式可以查询技术文档。比如:你的button如果名称是btn,你的slot 是on_btn_clicked
http://doc.qt.io/qt-5/designer-using-a-ui-file.html#automatic-connections Qt信号与槽的自动连接机制, BTW: SLOT SIGNAL 是字符串, &QWidget::pressed 是函数指针..
估计是Qt的moc预处理源程序时候生成了一个方法名和函数指针对照表,没有仔细研究。
有connect,Qt生成的主窗口类中有一个void setUI();方法,该方法内部调用了QMetaObject::connectSlotsByName(MainWindow); 后者内部使用了connect函数,不过其实现很拙劣,居然要靠方法名前三个字符是否on_来判断是不是事件处理过程,不支持PME模型的代价。
手写connect,不要纠结Creator中的槽编辑界面。
16,787
社区成员
26,677
社区内容
加载中
试试用AI创作助手写篇文章吧