2017-10-14 55 views
0

我使用QSqlTableModel *modelcompleter,然后用QCompleter将数据加载到qLineEdit *search获取id字段作为记录在与QSqlTableModel一个int

connect(ui->btnSearch, SIGNAL(clicked()), SLOT(search())); 
    modelcompleter->setTable("cust"); 
    modelcompleter->setEditStrategy(QSqlTableModel::OnManualSubmit); 
    modelcompleter->select(); 
    QCompleter *searchCompleter = new QCompleter(modelcompleter); 
    searchCompleter->setCompletionColumn(1); 
    searchCompleter->setCaseSensitivity(Qt::CaseInsensitive); 
    ui->search->setCompleter(searchCompleter); 

我使用QLineEdit的打在我想要的物品进入选择:

connect(ui->search, SIGNAL(returnPressed()), SLOT(search())); 

功能

void search(){ 
cust_name = ui->search->text(); 
    modelsearch->setTable("cust"); 
    modelsearch->setEditStrategy(QSqlTableModel::OnManualSubmit); 
    modelsearch->setFilter(QString("cust_name like '%%1%'").arg(cust_name)); 
    modelsearch->select(); 
    qDebug() << modelsearch->record(0).value("id").toInt(); } 

我不明白为什么,但目前设置为只有1条记录的模型搜索,当我输入时(QCompleter确保我提交完整的'cust_name')。 QDebug()输出0是否有另一种方式来获得相匹配的搜索查询'cust_name'

回答

0
qDebug() << modelsearch->record(0).value("id").toInt(); 

,而不是这个'cust_name'id。我用

QSqlQueryModel *query = new QSqlQueryModel; 
query->setQuery(QString("SELECT id from cust WHERE cust_name like '%%1%'").arg(cust_name)); 
qDebug() << query->record(0).value("id").toInt(); 

和它现在获取记录的id!

相关问题