0

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

有人可以具体告诉我如何访问 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()?
 }
4

2 回答 2

3

首先,创建combo的成员TheCooler,或以其他方式放入HANDLEITMAN具有成员的类中combo。除非它以TheCooler::HANDLEITMAN某种方式可用,否则您无法获取数据,这是执行此操作的合乎逻辑的方式。那么它只是

 void TheCooler::HANDLEITMAN(int index)
 {
      QVariant data = combo->itemData(index);
 }
于 2012-10-23T21:03:38.667 回答
2

如果您不想让 combo 成为 class 的成员,则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为 null,那么您可能尝试自己调用插槽,或者您已将其与非QComboBox.

于 2012-10-23T21:07:06.487 回答