我很难找到关于这个或一个例子的文档。
有人可以具体地告诉我如何访问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()?
}
答案 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
的类发出的信号相关联。