QComboBox获取Varient当“currentIndexChanged(int)”发出时

时间:2012-10-23 20:51:51

标签: c++ qt

我很难找到关于这个或一个例子的文档。

有人可以具体地告诉我如何访问QComboBox中当前所选索引的QVariant

 QComboBox * combo = new QComboBox();
 combo->addItem("Bla1", QVariant(1));
 combo->addItem("Bla2", QVariant(2));
 combo->addItem("Bla3", QVariant(3));
 combo->addItem("Bla4", QVariant(4));
 connect(combo, SIGNAL(currentIndexChanged(int)), this, slot(HANDLEITMAN(int))

当然还有来源

 void TheCooler::HANDLEITMAN(int index)
 {
      //What do I do with index?
      //sender()?
 }

2 个答案:

答案 0 :(得分:3)

首先,让combo成为TheCooler的成员,或者将HANDLEITMAN放入以combo为成员的类中。除非TheCooler::HANDLEITMAN以某种方式无法获取数据,否则这是合理的方法。那就是

 void TheCooler::HANDLEITMAN(int index)
 {
      QVariant data = combo->itemData(index);
 }

答案 1 :(得分:2)

如果您不想让combo成为类TheCooler的成员,则可以使用sender()函数返回指向发送触发信号的QObject的指针(在这种情况下,currentIndexChanged(int))。

void TheCooler::HANDLEITMAN(int index)
{
    QComboBox * combo = qobject_cast< QComboBox * >(sender());
    if (combo == 0)
        return; // something wrong happened

    QVariant data = combo->itemData(index);
}

如果combo为空,那么您可能会尝试自己调用插槽,或者您已将其与非QComboBox的类发出的信号相关联。