Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Григорий от Август 06, 2012, 16:24



Название: выделение строки по ID
Отправлено: Григорий от Август 06, 2012, 16:24
 Уважаемые форумчане , подскажите как выделить строку в QTableView с моделью QSqlQueryModel , после выполнения QSqlQueryModel::setQuery("select * from table") , у таблицы есть поле id,
 так вот как выделить строку если я знаю значение поля ID строки которую надо выделить...?


Название: Re: выделение строки по ID
Отправлено: kambala от Август 06, 2012, 17:30
tableView->setCurrentIndex() полагаю. если просто выделить, то через tableView->selectionModel().


Название: Re: выделение строки по ID
Отправлено: Странник от Август 07, 2012, 00:11
Код:
    int column = model->fieldIndex("id"); //номер столбца модели с id
    int id = 1; //искомое значение id

    QModelIndexList matchIndexes = model->match(model->index(0, column), Qt::DisplayRole, id, 1, Qt::MatchExactly);
    if (!matchIndexes.isEmpty())
    {
        int row = matchIndexes.at(0).row();
        tableView->selectRow(row);
        tableView->scrollTo(model->index(row, column));
    }


Название: Re: выделение строки по ID
Отправлено: Григорий от Август 07, 2012, 08:33
Код:
    int column = model->fieldIndex("id"); //номер столбца модели с id
    int id = 1; //искомое значение id

    QModelIndexList matchIndexes = model->match(model->index(0, column), Qt::DisplayRole, id, 1, Qt::MatchExactly);
    if (!matchIndexes.isEmpty())
    {
        int row = matchIndexes.at(0).row();
        tableView->selectRow(row);
        tableView->scrollTo(model->index(row, column));
    }

похоже то самое только у модели QSqlQueryModel нет метода fieldIndex , может есть ему замена?


Название: Re: выделение строки по ID
Отправлено: Странник от Август 07, 2012, 08:50
похоже то самое только у модели QSqlQueryModel нет метода fieldIndex , может есть ему замена?
действительно, и это очень странно. тогда:
Код:
    int column = model->record().indexOf("id");