您当前的位置: 首页 >  qt

令狐掌门

暂无认证

  • 1浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Qt重载的信号怎么连接

令狐掌门 发布时间:2021-07-01 14:45:39 ,浏览量:1

在Qt中经常会有一些信号,参数类型不同,但是信号名字相同,例如QComboBox的信号:

Q_SIGNALS:
	void currentIndexChanged(int index);
	void currentIndexChanged(const QString &);

对于这种重载的信号,用Qt4的connect来写是没问题的,代码如下:

connect(ui->comboBox, SIGNAL(currentIndexChanged(int)),this, SLOT(on_IndexChanged(int)));

但是如果用Qt5的写法那就无法编译通过,错误写法如下:

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

因为currentIndexChanged的参数可能是int, 也可能是QString, 此时有歧义,当然为了解决这种参数重载,Qt提供了泛型来解决,正确的写法如下:

connect(ui->comboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &MainWindow::on_IndexChanged);

用QOverload来指定参数类型,这样就不会有歧义了,这种写法看的比较啰嗦,Qt4那种connect其实也不错。

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0488s