1

私はQTableViewどこかを持っていますQSqlqueryModel

QSqlQueryModel db_model_.setQuery("SELECT * FROM Main WHERE Type='1' ORDER BY Count DESC");
tableView.setModel(&db_model_);

Mainとして定義:

Word(TEXT) | Count(INTEGER) | Type(INTEGER

ユーザーが別のアイテムから選択したアイテムのテキストに基づいて、このテーブルの行を選択したいと考えていますQListWidget

試してみsetCurrentIndexましたが、受け入れますQModelIndexWord私の列全体を検索しtableView 、その文字列を見つけてlistWidgetフィードする方法がわかりませんQModelIndex

void (QListWidget::*itemClicked)(QListWidgetItem*) = &QListWidget::itemClicked;

connect(&listWidget, itemClicked, [&](QListWidgetItem * item){
    const QString& text= item->text();
    //How to search thorough the Word column and find text and select it?!
});

これら 2 つのウィジェットの塗りつぶし方法がまったく異なるため、同じモデルを使用することはできません。

ここに画像の説明を入力

4

1 に答える 1

0

QAbstractItemModel::indexを使用して最初の列を反復処理しsetCurrentIndex、現在選択されている項目を変更します。

今はうまくいきます。

connect(&listWidget, itemClicked, [&](QListWidgetItem * item){
    const QString& text= item->text();
    int size = tableView.model()->rowCount();
    for (int i = 0; i < size; i++){
        QModelIndex& cur=tableView.model()->index(i, 0);
        if (cur.data() == text){
            tableView.setCurrentIndex(cur);
            tableView.scrollTo(cur);
            break;
        }
    }
});
于 2014-07-27T21:26:11.487 に答える