【Qt】VS中没有go to slot(转到槽)的解决方法

go to slot 是 Qt Creator 的功能,VS 打开的 Qt Designer 是没有的。

方法一 自定义Class的信号/槽

  1. 点击上方的“编辑信号/槽”
  2. 鼠标左键按住并拖动组件,拖到窗口的空白处,会出现类似地线的符号。注意:不要拖到其他组件上!
  3. 松开鼠标后会弹出“配置连接”的窗口,选择需要的信号,然后点击“编辑”。

在这里插入图片描述

  1. 在弹出的界面点击“加号”即可添加自定义的槽函数,添加完毕后点击“确定”,回到“配置连接”窗口选择我们自定义的函数即可。
    在这里插入图片描述
    在这里插入图片描述

  2. 来到 .h 和 .cpp 文件添加对应的代码。

// .h 文件
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication1.h"
class QtWidgetsApplication1 : public QMainWindow
{
    Q_OBJECT
public:
    QtWidgetsApplication1(QWidget *parent = nullptr);
    ~QtWidgetsApplication1();
// 添加 private slots:
// 添加刚才自定义的槽函数 slot1() 的声明
private slots:
    void slot1();

private:
    Ui::QtWidgetsApplication1Class ui;
};

此处为点击按钮B1后让单行文本框获取选择的文件路径

#include "QtWidgetsApplication1.h"
#include "QFileDialog"

QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    setWindowTitle("窗口");
}

QtWidgetsApplication1::~QtWidgetsApplication1()
{}
// 添加 自定义槽函数 slot1() 的实现
void QtWidgetsApplication1::slot1()
{
    QString fileName = QFileDialog::getOpenFileName(this, "选择文件", "", "文本文件 (*.txt);;所有文件 (*)");
    if (!fileName.isEmpty()) {
        ui.lineEdit->setText(fileName);
    }
}

成功运行
在这里插入图片描述

方法二 按照命名规则命名槽函数

命名规则如下
void on_<object name>_<signal name>(<signal parameters>)

void on_组件名_信号(信号函数的参数)
注意:此方法无需在 Qt Designer 添加槽函数,仅通过代码就能实现。

继续上一个方法中的例子,我们让B2按钮实现和B1一样的功能。
.h 文件

private slots:
    void slot1();	//B1
    void on_B2_clicked();	//B2 按照命名规则命名槽函数

.cpp 文件

// B1
void QtWidgetsApplication1::slot1()
{
    QString fileName = QFileDialog::getOpenFileName(this, "选择文件", "", "文本文件 (*.txt);;所有文件 (*)");

    if (!fileName.isEmpty()) {
        ui.lineEdit->setText(fileName);
    }
}
// B2
void QtWidgetsApplication1::on_B2_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this, "选择文件", "", "文本文件 (*.txt);;所有文件 (*)");

    if (!fileName.isEmpty()) {
        ui.lineEdit->setText(fileName);
    }
}

参考
如何在VS2017中关联QT的组件和信号槽

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值