Qt 带参数的信号

#include

#include “subwidget.h”

#include

class MainWidget : public QWidget

{

Q_OBJECT

public:

MainWidget(QWidget *parent = nullptr);

~MainWidget();

public slots:

void OpenSubWin(); //打开子窗体槽

void dealSlots(int,QString); //处理子窗体发出的信号

private:

QPushButton qBtn; //父窗体按钮

SubWidget subWin; //子窗体对象

};

#endif // MAINWIDGET_H

subwidget.h:

#ifndef SUBWIDGET_H

#define SUBWIDGET_H

#include

#include

class SubWidget : public QWidget

{

Q_OBJECT

public:

explicit SubWidget(QWidget *parent = nullptr);

private:

QPushButton qBtn; //按钮

void sendSig();

signals:

void subSig(int,QString); //子窗体信号

};

#endif // SUBWIDGET_H

main.cpp:

#include “mainwidget.h”

#include

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

MainWidget w;

w.show();

return a.exec();

}

mainwidget.cpp:

#include “mainwidget.h”

#include

#include

MainWidget::MainWidget(QWidget *parent)
QWidget(parent)

{

resize(400,300);

setWindowTitle(“父窗体a”);

qBtn.setText(“打开子窗体a”);

qBtn.setParent(this);

qBtn.move(100,100);

//处理父窗体按钮

connect(&qBtn,&QPushButton::clicked,this,&MainWidget::OpenSubWin);

//处理子窗体信号

void(SubWidget:: *dealSubSig)(int,QString)=&SubWidget::subSig;

connect(&subWin,dealSubSig,this,&MainWidget::dealSlots);

}

//构造函数

void MainWidget::OpenSubWin()

{

subWin.setWindowTitle(“子窗体a”);

subWin.show();

this->hide();

}

void MainWidget::dealSlots(int a, QString str)

{

subWin.hide();//隐藏子窗体

this->show(); //显示父窗体

//打印出传参结果 字符串str转为utf8编码

qDebug() << str.toUtf8().data() << a;

}

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Qt的`QSignalMapper`类来实现参数信号连接不参数的槽。`QSignalMapper`类提供了一种方法,可以将具有不同参数的多个信号映射到单个槽上。以下是一个简单的示例: ``` // 创建一个QSignalMapper对象 QSignalMapper *signalMapper = new QSignalMapper(this); // 连接参数信号到signalMapper上 connect(button1, SIGNAL(clicked()), signalMapper, SLOT(map())); connect(button2, SIGNAL(clicked()), signalMapper, SLOT(map())); connect(button3, SIGNAL(clicked()), signalMapper, SLOT(map())); // 设置映射规则,将每个按钮映射到一个整数 signalMapper->setMapping(button1, 1); signalMapper->setMapping(button2, 2); signalMapper->setMapping(button3, 3); // 连接signalMapper的mapped(int)信号到不参数的槽 connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(onButtonClicked(int))); ``` 在上面的示例中,我们首先创建了一个`QSignalMapper`对象,然后将参数信号`button1`、`button2`和`button3`连接到`signalMapper`的`map()`槽上。接下来,我们设置映射规则,将每个按钮映射到一个整数。最后,我们将`signalMapper`的`mapped(int)`信号连接到不参数的槽`onButtonClicked(int)`上,以便在按钮被单击时调用该槽。当任何一个按钮被单击时,`signalMapper`将发出`mapped(int)`信号,其中包含该按钮的整数映射值。然后,`onButtonClicked(int)`槽被调用,以便我们可以根据按钮的映射值来执行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值