2017-10-14 106 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!