【QT】QComboBox:activated信号和currentIndexChanged信号的区别


1、activated

1.1 原型
[signal] void QComboBox::activated(int index)
[signal] void QComboBox::activated(const QString& text)
  • index:当前选项索引
  • text:当前选项的文本
1.2 触发机制

  activated信号在用户从下拉列表中选择一个选项时发射,不管QComboBox的当前索引是否发生改变都会发射。(注:在程序里设置当前索引不会触发activated信号,activated信号只会在用户与QComboBox交互操作过程中触发)

1.3 使用场景

  activated信号通常用于在用户选择一个选项时执行某些操作,比如打开一个对话框、更新某个数据模型等。

1.4 连接信号和槽的方法

  因为activated信号在QComboBox类中有重载,使用QT5常规的链接方式(如下所示),因为不能明确指定具体是哪个重载函数,所以编译时会报错。

QObject::connect(&comboBox, &QComboBox::activated, this, &Dialog::slot1);

  对于这种有重载的信号,要正确连接槽,有两种方式:

1.4.1 方式一

  使用QT4的连接方法。如下所示:

QObject::connect(&comboBox, SIGNAL(activated(int)), this, SLOT(slot1(int));QObject::connect(&comboBox, SIGNAL(activated(const QString&)), this, SLOT(slot1(const QString&));
1.4.2 方式二

  使用QT文档推荐的方法,使用函数指针来连接信号与槽。如下所以:

connect(comboBox, QOverload<int>::of(&QComboBox::activated), this, this, &Dialog::slot1);

2、currentIndexChanged

2.1 原型
[signal] void QComboBox::currentIndexChanged(int index)
[signal] void QComboBox::currentIndexChanged(const QString& text)
  • index:当前选项索引
  • text:当前选项的文本
2.2 触发机制

  currentIndexChanged信号在QComboBox类的currentIndex属性发生改变时发射,不论这个改变是由用户操作还是程序设置引起的。(注:如果进行了用户操作或程序设置,但是currentIndex属性值没有变化,该信号依然是不发射的)

2.3 使用场景

  currentIndexChanged信号通常用于在当前索引变化时更新与QComboBox相关的其他界面元素或执行某些操作。

2.4 连接信号和槽的方法

  currentIndexChanged信号在QComboBox类中也是有重载,处理方法与activated信号类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanzhyan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值