QInputDialog.getItem() 获取项目索引
QInputDialog.getItem() get item index
我有一些清单和 QInputDialog
。我的列表中可能有相同的字符串,所以我不想得到字符串结果而是项目索引。是真的吗?
QStringList list;
for (Serial serial: serialList->vector) {
list.append(serial.name);
}
QInputDialog *dialog = new QInputDialog();
bool accepted;
QString item = dialog->getItem(0, "Title", "Label:", list, 0, false, &accepted);
if (accepted && !item.isEmpty()) {
qDebug() << dialog->?????; //here i want to see index of choosen item
}
我尝试使用 result()
但它不起作用。请帮忙。
没有,QInputDialog
没有这样的方法。但是当然这个信息在对话框中有组合框。
你能访问这个组合框吗?
我认为这不是个好主意。看看QInputDialog
的source code:
void QInputDialog::setComboBoxItems(const QStringList &items)
{
Q_D(QInputDialog);
d->ensureComboBox();
d->comboBox->blockSignals(true);
d->comboBox->clear();
d->comboBox->addItems(items);
d->comboBox->blockSignals(false);
if (inputMode() == TextInput)
d->chooseRightTextInputWidget();
}
如您所见,您的组合框被 d-pointer
隐藏,这是 Qt
中的正常做法(隐藏实现细节)。 More information here.
可能是最佳解决方案:
使用 QStringList
中的 indexOf()
方法。例如:
int index = list.indexOf(item);
我有一些清单和 QInputDialog
。我的列表中可能有相同的字符串,所以我不想得到字符串结果而是项目索引。是真的吗?
QStringList list;
for (Serial serial: serialList->vector) {
list.append(serial.name);
}
QInputDialog *dialog = new QInputDialog();
bool accepted;
QString item = dialog->getItem(0, "Title", "Label:", list, 0, false, &accepted);
if (accepted && !item.isEmpty()) {
qDebug() << dialog->?????; //here i want to see index of choosen item
}
我尝试使用 result()
但它不起作用。请帮忙。
没有,QInputDialog
没有这样的方法。但是当然这个信息在对话框中有组合框。
你能访问这个组合框吗?
我认为这不是个好主意。看看QInputDialog
的source code:
void QInputDialog::setComboBoxItems(const QStringList &items)
{
Q_D(QInputDialog);
d->ensureComboBox();
d->comboBox->blockSignals(true);
d->comboBox->clear();
d->comboBox->addItems(items);
d->comboBox->blockSignals(false);
if (inputMode() == TextInput)
d->chooseRightTextInputWidget();
}
如您所见,您的组合框被 d-pointer
隐藏,这是 Qt
中的正常做法(隐藏实现细节)。 More information here.
可能是最佳解决方案:
使用 QStringList
中的 indexOf()
方法。例如:
int index = list.indexOf(item);