是否可以从qcompleter获取所选文本的主键



我正在使用QCompleter上的QCOMPLETER编辑来获取一些文本。完成者功能正常工作。

QCOMPLETER是从SQL表获取数据。

completer = new QCompleter(this);
model = new QSqlRelationalTableModel(this, db);
model->setTable("product"); 
model->select();
completer->setModel(model);
completer->setCompletionColumn(1);                 // points to "name" in product table
ui->line_edit->setCompleter(completer);

现在在line_edit_returnpressed()上,我可以获得所选文本。是否可以在SQL表中获得主键/行索引,以用于" QCOMPLETER"的电流选择?

我看到ui->line_edit->completer()->currentRow();总是返回0。

我只是想保存一个SQL查询。

我必须确认@pavel strakhov评论,谢谢。如果得到答案,我会接受的。

我一直使用 QCompleter::currentIndex的整个时间与我使用QCompleter::setModel()设置的SQL表模型。我不知道Qcompleter是如何工作的,但我相信它在内部从输入表模型中派生列表模型。

来自文档 -

QABSTRACTITEMMODEL* QCOMPLETER :: PONEPTIONMODEL()

Returns the completion model. The completion model is a read-only list model that contains all the possible matches for the current completion prefix. The completion model is auto-updated to reflect the current completions.

所以我的插槽看起来像这样 -

void MainWindow::on_line_edit_returnPressed()
{
    QModelIndex index = ui->le_filter->completer()->currentIndex();
    if (index.isValid()) {
        int row = index.row();
        int key = completer->completionModel()->index(row, 0).data().toInt();
        qDebug() << key;
    }
}

相关内容

  • 没有找到相关文章

最新更新