[英]Connect QComboBox::currentIndexChanged(int) to QSignalMapper::map()
[英]QComboBox Get The Varient When “currentIndexChanged(int)” Emitted
我很难找到有关此示例或示例的文档。
有人可以具体告诉我如何访问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()?
}
首先,使combo
成为TheCooler
的成员,否则将HANDLEITMAN
放入具有combo
作为成员的类中。 除非TheCooler::HANDLEITMAN
以某种方式获取它,否则您将无法获取数据,而这是进行数据处理的逻辑方法。 那只是
void TheCooler::HANDLEITMAN(int index)
{
QVariant data = combo->itemData(index);
}
如果您不想让组合成为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
的类发出的信号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.