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没有这样的方法。但是当然这个信息在对话框中有组合框。

你能访问这个组合框吗?

我认为这不是个好主意。看看QInputDialogsource 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);