Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QSqlQueryModel, QTableView, фильтрация
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
Rigat
Подскажите ка вынуть из QTableView имя колонки в таблице?

Подробнее выглядит так:

model = new QSqlQueryModel(this);
query = "Select SName, FName, ClnName, Model.Model, Num from Client, KTM, Model where Client.ClnNo=KTM.ClnNo and KTM.Model=Model.ModelNo";
model->setQuery(query);
ui->tableView->setModel(model);


Для каждой колонки есть свой фильтр в ячейках QTableWidget, который пользователь вводит самостоятельно. Я хочу реализовать его примерно так (код не отлажен, могут быть ошибки):

void MainWindow::fnd(int col, int row)
{
    QString s;
    if (ui->tableWidget->item(col, row)->text() != "")
    {
        for (int i=0; i<ui->tableWidget->columnCount(); ++i)
        {
            if (ui->tableWidget->item(0,i)->text() != "")
            {
                s = s+" and"+ИМЯ_КОЛОНКИ+" Like '%"+ui->tableWidget->item(0,i)->text()+"%";
            }
        }
        model->setQuery(query+s);
    }
    else
    {
        model->setQuery(query);
    }
}

Вот мне надо узнать ИМЯ_КОЛОНКИ.
Или может кто знает другой способ как реализовать такую фильтрацию.
Litkevich Yuriy
так и не понял о чём речь, то ли о представлении (QTableView), то ли о таблице-виджете (QTableWidget)

Rigat
Цитата
так и не понял о чём речь, то ли о представлении (QTableView), то ли о таблице-виджете (QTableWidget)

Речь не о QTableView и не о QTableWidget, а о реализации фильтрации.

Нашел нужную функцию
model->headerData(0, Qt::Horizontal, 0).toString()
так он выдает имя первого столбца, который называется "SName", но есть проблема если я задам новое имя столбца в модели
таким образом
model->setHeaderData(0, Qt::Horizontal, tr("Name"))
то он выдаст мне "Name", соответственно sql запрос типа "Select Name, FName..." не найдет столбец Name в таблице.
MoPDoBoPoT
А если так:
model->query().record().fieldName(index);

?
Rigat
Цитата(MoPDoBoPoT @ 3.6.2010, 11:18) *
А если так:
model->query().record().fieldName(index);

?

Вот это то, что нужно. Спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.