crossplatform.ru

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


  Ответ в QSqlQueryModel, QTableView, фильтрация
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Rigat Дата 4.6.2010, 15:31
 
Цитата(MoPDoBoPoT @ 3.6.2010, 11:18) *
А если так:
model->query().record().fieldName(index);

?

Вот это то, что нужно. Спасибо!
MoPDoBoPoT Дата 3.6.2010, 11:18
  А если так:
model->query().record().fieldName(index);

?
Rigat Дата 3.6.2010, 5:44
 
Цитата
так и не понял о чём речь, то ли о представлении (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 в таблице.
Litkevich Yuriy Дата 1.6.2010, 16:15
  так и не понял о чём речь, то ли о представлении (QTableView), то ли о таблице-виджете (QTableWidget)

Rigat Дата 1.6.2010, 15:39
  Подскажите ка вынуть из 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);
    }
}

Вот мне надо узнать ИМЯ_КОЛОНКИ.
Или может кто знает другой способ как реализовать такую фильтрацию.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 22.10.2021, 7:43