Qt Creator控件上“转到槽”生成槽函数,源代码中却没发现有connect函数,这是为啥?

ooolinux 2018-03-31 01:01:42
Qt Creator控件上“转到槽”生成槽函数:
private slots:
void on_countBtn_clicked();
源代码中却没发现有connect函数,这是为啥?
...全文
4648 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我发现把code completion和error insight关掉仍然可以有提示,你可以试试。
ooolinux 2018-04-09
  • 打赏
  • 举报
回复
引用 31 楼 woshidengyong 的回复:
这个不是常识么,一直就是这样的
知道了才是常识。
herodengno1 2018-04-09
  • 打赏
  • 举报
回复
这个不是常识么,一直就是这样的
ooolinux 2018-04-09
  • 打赏
  • 举报
回复
引用 29 楼 DelphiGuy 的回复:
我发现把code completion和error insight关掉仍然可以有提示,你可以试试。
CB 6.0把“代码完成”关掉就没有提示了。高版本的还没试。
ooolinux 2018-04-08
  • 打赏
  • 举报
回复
引用 27 楼 DelphiGuy 的回复:
就是因为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。
Delphi、CB用这复杂的技术,代码提示效果也不如VS(比如C#)的好,还不如学学微软~ 我大一(95年)才用386,内存4M,很多部件还是二手的,那时候奔腾电脑要上万多,学校机房还有286的,自带一堆软盘上机,到你上学的时候电脑应该比较普及、好用了。
  • 打赏
  • 举报
回复
就是因为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。
ooolinux 2018-04-05
  • 打赏
  • 举报
回复
引用 23 楼 DelphiGuy 的回复:
我不反对别人学Qt,实际上我也看一下Qt的开源代码,我只是认为在非Linux上,尤其是windows上,用Qt做GUI是非常错误的选择,如果商业项目这么做,肯定是要付出代价的。 我原来认为微软收购Skype之后,会用自己的工具改写,刚才看了一下电脑上安装的Skype,2017-08-25发布的7.40.99.103,仍然是用Delphi编译的:
问题是Qt免费,Delphi昂贵,免费的东西再不好也有人要,何况Qt也不算差,比如跟MFC、wxWidgets比。 FMX写的程序发布可以不依赖DLL吗?还是需要OpenGL的? Delphi、CB除了昂贵,我认为另一个问题是代码提示不够好,跟VS是没法比,感觉还不如Qt Creator,经常提示失效,找个方法要查Help(我用得比较多的是CB 6.0)。
  • 打赏
  • 举报
回复
我不反对别人学Qt,实际上我也看一下Qt的开源代码,我只是认为在非Linux上,尤其是windows上,用Qt做GUI是非常错误的选择,如果商业项目这么做,肯定是要付出代价的。 我原来认为微软收购Skype之后,会用自己的工具改写,刚才看了一下电脑上安装的Skype,2017-08-25发布的7.40.99.103,仍然是用Delphi编译的:
  • 打赏
  • 举报
回复
http://doc.qt.io/qt-5/designer-using-a-ui-file.html#automatic-connections Qt信号与槽的自动连接机制, BTW: SLOT SIGNAL 是字符串, &QWidget::pressed 是函数指针..
ooolinux 2018-04-04
  • 打赏
  • 举报
回复
引用 20 楼 DelphiGuy 的回复:
我感觉Qt的架构设计比较拙劣,如果不在Linux上做GUI应用的话,没必要浪费太多时间研究它,Skype的开发者曾痛骂过Qt纯属垃圾,因为他们当初曾经想一套GUI多平台,后来还是只在Linux上保留Qt版本。
虽然架构不如VCL,发布exe带的一堆DLL也不爽,问题是现在国内用Qt的越来越多,我只是买了本书随便看看,了解一下。 Skype在Windows平台还是Delphi开发的吗?
ooolinux 2018-04-04
  • 打赏
  • 举报
回复
引用 19 楼 foxyz 的回复:
特殊的命名规则的话,不需要你写connect的。例如:按钮的signal-slot.当然如果你的slot命名规则是自己的格式,你就得显式去connect.具体的可以不用显式连接(其实是moc帮你做了)slot函数格式可以查询技术文档。比如:你的button如果名称是btn,你的slot 是on_btn_clicked
是的,17楼那个文档也说了, a slot with a name that follows a standard convention: void on_<object name>_<signal name>(<signal parameters>); 其实用“转到槽”来生成槽函数框架就可以了。
  • 打赏
  • 举报
回复
我感觉Qt的架构设计比较拙劣,如果不在Linux上做GUI应用的话,没必要浪费太多时间研究它,Skype的开发者曾痛骂过Qt纯属垃圾,因为他们当初曾经想一套GUI多平台,后来还是只在Linux上保留Qt版本。
donwmufromdying 2018-04-04
  • 打赏
  • 举报
回复
特殊的命名规则的话,不需要你写connect的。例如:按钮的signal-slot.当然如果你的slot命名规则是自己的格式,你就得显式去connect.具体的可以不用显式连接(其实是moc帮你做了)slot函数格式可以查询技术文档。比如:你的button如果名称是btn,你的slot 是on_btn_clicked
ooolinux 2018-04-04
  • 打赏
  • 举报
回复
引用 17 楼 u010374511 的回复:
http://doc.qt.io/qt-5/designer-using-a-ui-file.html#automatic-connections Qt信号与槽的自动连接机制, BTW: SLOT SIGNAL 是字符串, &QWidget::pressed 是函数指针..
谢谢~ Qt的文档一般要怎么查找,比如概念、关键字、类方法?
ooolinux 2018-04-03
  • 打赏
  • 举报
回复
引用 13 楼 DelphiGuy 的回复:
估计是Qt的moc预处理源程序时候生成了一个方法名和函数指针对照表,没有仔细研究。
可能是的。
  • 打赏
  • 举报
回复
估计是Qt的moc预处理源程序时候生成了一个方法名和函数指针对照表,没有仔细研究。
ooolinux 2018-04-02
  • 打赏
  • 举报
回复
引用 11 楼 DelphiGuy 的回复:
有connect,Qt生成的主窗口类中有一个void setUI();方法,该方法内部调用了QMetaObject::connectSlotsByName(MainWindow); 后者内部使用了connect函数,不过其实现很拙劣,居然要靠方法名前三个字符是否on_来判断是不是事件处理过程,不支持PME模型的代价。
它内部调用的connect函数,控件名参数也是来自on_xxx_clicked()的xxx吗?
  • 打赏
  • 举报
回复 1
有connect,Qt生成的主窗口类中有一个void setUI();方法,该方法内部调用了QMetaObject::connectSlotsByName(MainWindow); 后者内部使用了connect函数,不过其实现很拙劣,居然要靠方法名前三个字符是否on_来判断是不是事件处理过程,不支持PME模型的代价。
ooolinux 2018-04-02
  • 打赏
  • 举报
回复
引用 9 楼 xuzzzhen123 的回复:
手写connect,不要纠结Creator中的槽编辑界面。
如果预编译器会生成,就没必要写了吧?
天外怪魔 2018-04-02
  • 打赏
  • 举报
回复
手写connect,不要纠结Creator中的槽编辑界面。
加载更多回复(7)

16,787

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧