【QT问题】 Qt信号函数如果重名,调用怎么处理

问题描述:

在调用某个类的信号函数的时候,出现信号函数名字相同,参数不同的情况,但是Qt在链接信号槽的时候,又不需要指明信号函数参数,此时就会出现无法分辨的情况。

例如:QComboBox的信号

Q_ SIGNALS:
     void currentIndexChanged(int index);
     void currentIndexChanged(const QString &);

如果用Qt5的信号槽写法,就是如下结果

connect(ui->comboBox, &QComboBox::currentIndexChanged, this, &MainWindow::on_ IndexChanged);

编译器会因不知道该调用哪个方法而报错。

解决办法:

 1、用Qt4的信号槽连接方式来写。

为什么用QT4的connect写就不会出错呢?原因很简单,因为QT4的写的时候,需要带上信号函数和槽函数的参数类型,这样就不会出现问题。

// 连接int类型的信号
connect(comboBox, SIGNAL(currentIndexChanged(int)), receiver, SLOT(mySlotInt(int)));

// 连接QString类型的信号
connect(comboBox, SIGNAL(currentIndexChanged(QString)), receiver, SLOT(mySlotString(QString)));

2、使用泛型

 可以通过使用泛型指定要调用的函数,解决信号重载问题。

connect(ui->comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
&MainWindow::on_ IndexChanged);

有用的知识又增加了~

相关推荐

  1. QT问题Qt信号函数如果调用怎么处理

    2024-03-25 09:38:05       40 阅读
  2. Qt使用函数指针处理信号和槽函数重载

    2024-03-25 09:38:05       60 阅读
  3. Qt 信号函数异步与同步处理

    2024-03-25 09:38:05       55 阅读
  4. Qt如何写closeEvent

    2024-03-25 09:38:05       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-25 09:38:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-25 09:38:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-25 09:38:05       87 阅读
  4. Python语言-面向对象

    2024-03-25 09:38:05       96 阅读

热门阅读

  1. 想注册滴滴司机驾龄不够怎么办?

    2024-03-25 09:38:05       42 阅读
  2. 大学 Python 程序设计实验报告:替换敏感词

    2024-03-25 09:38:05       42 阅读
  3. 24计算机考研调剂 | 西安石油大学

    2024-03-25 09:38:05       42 阅读
  4. 单例模式---饿汉模式和懒汉模式

    2024-03-25 09:38:05       40 阅读
  5. 怎么同步Goodnotes笔记从ipad端到手机端查看

    2024-03-25 09:38:05       29 阅读
  6. 构建Pytorch虚拟环境教程

    2024-03-25 09:38:05       37 阅读
  7. xgb和gbm做回归代码sklearn

    2024-03-25 09:38:05       40 阅读
  8. 【生产力】Postman Desktop

    2024-03-25 09:38:05       29 阅读
  9. go-zero处理本地事务

    2024-03-25 09:38:05       32 阅读
  10. Spark与hive 不兼容语法

    2024-03-25 09:38:05       49 阅读