Visual Studio进行Qt开发时Qt Designer没有“转到槽”选项的问题


问题描述:
  在使用Qt Creator进行界面设计时,只需要在控件上右击便会出现“转到槽”选项,从而可以进行槽函数的编写与槽函数和信号的自动连接,十分方便。但在使用VS进行Qt开发时,Qt Designer没有这个选项。

解决方法:
1.自己定义信号和槽并手工连接:
qvtk_demo.h:

1 #pragma once 2 3 #include <QtWidgets/QMainWindow> 4 #include "ui_qvtk_demo.h" 5 6 class QVTK_Demo : public QMainWindow 7 ;

qvtk_demopp:

1 #include "qvtk_demo.h" 2 3 QVTK_Demo::QVTK_Demo(QWidget *parent) 4 : QMainWindow(parent) 5 10 11 //在qvtk_demopp中定义槽函数 12 void QVTK_Demo::my_slot() 13

注意在调用mybutton这个对象时,需要使用

ui.mybutton

而不能直接使用mybutton。

比较推荐第二种方法,既简便又不容易出现bug。

2.按照命名规则命名槽函数:

2.1内部逻辑

ui_qvtk_demo.h中的setupUint( ) 函数末尾存在

QMetaObject::connectSlotsByName(QVTK_DemoClass);

这个函数的原始形式为

void QMetaObject::connectSlotsByName(QObject *object);

此函数会递归搜索给定对象(此处是QVTK_DemoClass)的所有子对象,并将来自它们的匹配信号连接到遵循一定命名规则的此给定对象的槽函数。读起来是不是有一点晕,可以参考以下Qt官方的原文:

2.2命名规则

void on_<object name>_<signal name>(<signal parameters>):

<>括号中的内容就是需要用户确定的内容,分别是发出信号的子对象(子控件)的名字,发出的信号的名字和信号函数的参数。

2.3实例

只需分别在qvt_demo.h和qvt_demopp文件中添加自定义槽函数的声明和定义即可。
qvt_demo.h:

1 #pragma once 2 3 #include <QtWidgets/QMainWindow> 4 #include "ui_qvtk_demo.h" 5 6 class QVTK_Demo : public QMainWindow 7 ;

qvtk_demopp:

1 #include "qvtk_demo.h" 2 3 QVTK_Demo::QVTK_Demo(QWidget *parent) 4 : QMainWindow(parent) 5 8 9 //自定义的槽函数 10 void QVTK_Demo::on_mybutton_clicked() 11

但是注意此种方法添加的槽函数只能位于QVTK_Demo这个类中,才能通过

QMetaObject::connectSlotsByName(QVTK_DemoClass);

进行自动连接。



上一篇:Qt QCustomPlot 使用整理

下一篇:Visual Studio 2022 + Qt 中文乱码问题


Qt VisualStudio
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图