当前位置: 首页 > 网络知识

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

时间:2026-01-29 09:26:26

问题描述:
  在使用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);

进行自动连接。



上一篇:Visual Studio 2015+Qt编程,qDebug()无法输出打印出信息问题
下一篇:Qt QCustomPlot 使用整理
Qt VisualStudio
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素