crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QSqlQueryModel, QTableView, фильтрация
Rigat
  опции профиля:
сообщение 1.6.2010, 15:39
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 19.5.2010
Пользователь №: 1735

Спасибо сказали: 0 раз(а)




Репутация:   0  


Подскажите ка вынуть из 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
  опции профиля:
сообщение 1.6.2010, 16:15
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9668
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


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

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rigat
  опции профиля:
сообщение 3.6.2010, 5:44
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 19.5.2010
Пользователь №: 1735

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
так и не понял о чём речь, то ли о представлении (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
  опции профиля:
сообщение 3.6.2010, 11:18
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


А если так:
model->query().record().fieldName(index);

?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rigat
  опции профиля:
сообщение 4.6.2010, 15:31
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 19.5.2010
Пользователь №: 1735

Спасибо сказали: 0 раз(а)




Репутация:   0  


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

?

Вот это то, что нужно. Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 5.12.2021, 4:20