我使用 Qt Creator(版本 4.7.0)创建了一个新对话框 - 模板化表单之一(带有“确定”和“取消”按钮)。
我希望用户在表单上输入一些数据,然后当他们单击“确定”时,它会保存该信息。所以我看了一下,发现当单击“确定”按钮时,它会向对话框的接受槽发送信号。
因此,我右键单击设计视图中的对话框,然后选择“转到插槽...”。我单击“accepted”选项,该选项将 on_Dialog_accepted() 方法放入对话框类中。但是,当我运行程序并打开对话框时,我的控制台中出现错误:QMetaObject::connectSlotsByName: No matching signal for on_Dialog_accepted()
那么我做错了什么?
我找到了有关 connectSlotsByName 的文档 - 但没有任何关于缺乏经验的 Qt 开发人员可能陷入的明显错误的信息。
在选择“转到插槽...”之前右键单击设计视图中的对话框会建立从对话框信号到对话框插槽的连接,这不适用于 QMetaObject::connectSlotsByName(),因为该方法会搜索适用于所有子对象,但不适用于对象本身。
您实际上想做的是右键单击“确定”按钮,然后从那里选择“转到插槽...”。然后,它将创建一个带有按钮小部件名称的插槽,并且将在运行时正确建立连接。
QtDesigner 让您从对话框中选择“转到插槽...”是没有意义的。您可能想为此向 Qt 开发人员提交错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)