【发布时间】:2016-08-19 18:28:18
【问题描述】:
我在 gui 小部件中设置了一个 QcomboBox 并添加了项目
for(int i = 1; i < 31; i++)
{
ui->combo->addItem(QString::number(i));
}
在 QComboBox 插槽中,我想通过
获取所选值int index =ui->combo->itemData( ui->combo->currentText());
但有错误:316: error: no matching function for call to 'QComboBox::itemData(QString)'
如果我使用currentIndex 而不是currentText 打印时返回0;
addItem 获取Qstring,
void QComboBox::addItem(const QString & text, const QVariant & userData = QVariant())
并且 ItemData 与 currentIndex 一起工作,
我使用insertItem,出现sae错误,如何设置值或文本并获取选定值??
【问题讨论】:
-
@thuga 我编辑的类型不正确
-
你为什么不用
int index = ui->combo->currentIndex();?在您发布的代码中,您从未为组合框设置任何数据,这就是itemData返回 0 的原因。或者,如果您想获取当前文本,只需使用QString selected_text = ui->combo->currentText();。 -
@thuga 如果我在运行程序时使用此
index = ui->combo->currentIndex();获取 currentindex 而不选择,例如,如果我在没有选择的情况下运行时将 1 设置为 31 currentindex 为 1 -
@thuga 我通过这种方式设置数据
ui->combo->addItem(QString::number(i));并尝试 insertItem() ,他们返回0,那么如何设置数据?? -
这和
QComboBox::setItemData不一样。无论如何,问题不存在。currentIndex/currentText应该可以工作。你甚至在哪里检查currentIndex/currentText?您是否已将插槽连接到组合框的某些信号?