首页 > 其他分享 >Visual Studio进行Qt开发时Qt Designer没有“转到槽”选项的问题

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

时间:2024-01-31 11:48:27浏览次数:36  
标签:Designer Qt demo Visual ui QVTK Demo qvtk 函数

问题描述:
  在使用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 {
 8     Q_OBJECT
 9 
10 public:
11     QVTK_Demo(QWidget* parent = Q_NULLPTR);
12     
13 //在qvtk_demo.h中声明信号
14 //signals:
15 //   void my_signal();
16 
17 //在qvtk_demo.h中声明槽函数
18 private slots:
19   void my_slot();
20   
21 private:
22     Ui::QVTK_DemoClass ui;
23 };

qvtk_demo.cpp:

 1 #include "qvtk_demo.h"
 2 
 3 QVTK_Demo::QVTK_Demo(QWidget *parent)
 4     : QMainWindow(parent)
 5 {
 6     ui.setupUi(this);
 7     //在qvtk_demo.cpp连接信号和槽
 8     connect(ui.mybutton, &QPushButton::clicked, this, &QVTK_Demo::mybutton_clicked);
 9 }
10 
11 //在qvtk_demo.cpp中定义槽函数
12 void QVTK_Demo::my_slot() 
13 {
14 }

注意在调用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_demo.cpp文件中添加自定义槽函数的声明和定义即可。
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 {
 8     Q_OBJECT
 9 
10 public:
11     QVTK_Demo(QWidget* parent = Q_NULLPTR);
12 
13 //自定义的槽函数
14 private slots:
15     void on_mybutton_clicked();
16 
17 private:
18     Ui::QVTK_DemoClass ui;
19 };

qvtk_demo.cpp:

 1 #include "qvtk_demo.h"
 2 
 3 QVTK_Demo::QVTK_Demo(QWidget *parent)
 4     : QMainWindow(parent)
 5 {
 6     ui.setupUi(this);
 7 }
 8 
 9 //自定义的槽函数
10 void QVTK_Demo::on_mybutton_clicked() 
11 {
12     this->close();
13 }

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

QMetaObject::connectSlotsByName(QVTK_DemoClass);

进行自动连接。

标签:Designer,Qt,demo,Visual,ui,QVTK,Demo,qvtk,函数
From: https://www.cnblogs.com/ybqjymy/p/17998872

相关文章

  • Visual Studio 2015+Qt编程,如何使用qDebug()打印出信息
    问题:VisualStudio2015+Qt编程,调试程序的时候,使用qDebug()发现在vs的输出界面没有打印出qDebug()的信息。找到了最容易的解决办法(此方法只可以解决此解决方案的):1.项目文件名那里鼠标右键,点击属性,打开属性页 2.找到连接器->系统->子系统 3.将子系统由窗口改为控制台,点击......
  • Visual Studio 2022 + Qt 中文乱码问题
    使用Qt编译中文标题出现乱码问题如下图首先打开文件属性->点击(C/C++)->点击(所有选项)->找到(附加选项)这一栏修改为(/UTF-8)注意大小写  然后在头文件中添加以下代码:1#if_MSC_VER>=16002#pragmaexecution_character_set("utf-8")3#endif即可解决问题......
  • SciTech-CG-Graphics-Chart-CodeGenerator-PyQtGraph: 基于PyQt的图形绘制以及应用库
    UMLclassdiagram:https://pyqtgraph.readthedocs.io/en/latest/api_reference/uml_overview.htmlFlowChart:https://pyqtgraph.readthedocs.io/en/latest/api_reference/flowchart/index.htmlTheStateMachineFramework¶:https://doc.qt.io/qtforpython-5/overviews/......
  • Qt 解决qtcreator工程文件例程报错error: cannot initialize object parameter of typ
    qt下载好并且环境配置完成,kits和qt都已配置完成在qtcreator中,在终端手动编译qmakemake都完全没问题,但是在qtcreator中却报错。即使是新建工程例程都报错。版本qt5.6.0qtcreator4.11.0报错main.cpp:96:error:cannotinitializeobjectparameteroftype‘QWidget’wi......
  • Visual Studio 配置 MySQL
    1.将MySQL中的include文件和lib文件资源粘贴到VisualStudioinclude文件下和lib文件下找到MySQL的lib和include位置找到VisualStudio的include和bin文件位置将其放进去2.找到两个文件,放在创建的项目目录里在项目里,点击这个,打开文件夹位置......
  • Qt cannot initialize object parameter of type ‘QWidget‘ with an expression of
    报错如图:qtcreator工程文件例程报错error:cannotinitializeobjectparameteroftype‘QWidget’withanexpressionoftype‘tab_workface’问题分析可能因为qtcreator4.11.0basedonqt5.12版本略微冲突导致。。问题解决帮助->关于插件,将ClangCo......
  • springboot集成mqtt
    SpringBoot集成MQTT(简单版)一、docker安装emqx环境(Linux系统)emqx:mqtt服务器(broker)version:'3'services:emqx:image:emqx/emqxcontainer_name:emqxrestart:alwaysports:-8001:18083-8002:1883-8003:8083-8004......
  • Qt error C1083:无法打开文件stddef.h或crtdbg.h
    问题描述环境:QT5.15.2从别的电脑拷过来一个能跑的项目在新安装的qt上运行,报错C1038,检查发现报错的文件都跟sdk有关,问题就是不能正确找到SDK相关的。解决1.查找SDK(我是用的"everything"工具搜索的,一般都会在这个路径下面) 在这几个文件夹中选择最新的那个,点进去,里边......
  • Qt 使用MSVC2017编译报错: C1083:无法打开包括文件: “stddef.h“的解决方案
    之前安装过QT的好几个版本:5.9,5.12,5.15,编译过项目。现在使用QT5.12.6+MSVC2017编译项目出现如下图所示报错,困扰了我2天。一开始,我通过卸载重装QT和 VS2017 都没有解决问题。今天晚上找到一个办法,就是在QT“项目”设置里面将头文件目录配置进去,终于将问题解决......
  • Qt QCustomPlot 入门教程
    简述QCustomPlot是一个基于QtC++的图形库,用于绘制和数据可视化-制作漂亮的2D图-曲线图、趋势图、坐标图、柱状图等,并为实时可视化应用程序提供高性能服务。它没有进一步的依赖关系,并有着良好的文档记录。QCustomPlot可以导出为各种格式,比如:PDF文件和位图(如:PNG、JPG......