crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Вычисляемый столбец в QSqlRelationalTableModel, собсно
nZil
  опции профиля:
сообщение 1.9.2009, 20:59
Сообщение #1


Студент
*

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

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




Репутация:   0  


Как вывести в один столбец два поля БД по такому шаблону <поле1> + " - " <поле2>?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 1.9.2009, 21:19
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3274
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


QMySqlRelationalTableModel *model = new QMySqlRelationalTableModel;
model->setQuery("SELECT id + ' - '  + subject, sender, recipient, date, body FROM messages");
так?

QMySqlRelationalTableModel потому, что класс модели прийдется переопределять, так как QSqlRelationalTableModel::setQuery вроде protected.

Сообщение отредактировал ViGOur - 1.9.2009, 21:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
nZil
  опции профиля:
сообщение 2.9.2009, 17:05
Сообщение #3


Студент
*

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

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




Репутация:   0  


переопределил.

void SqlRelationalTableModel::setSqlQuery(const QString &query)
{
    this->setQuery(QSqlQuery(query));
}

Запрос:
workersModel->setSqlQuery("SELECT id, incode, surname + \" \" + name + \" \" + lastname, birthdate, pseries, pnumber FROM workers");
Не получилось. В представлении отображаются все столбцы БД.

Сообщение отредактировал Litkevich Yuriy - 2.9.2009, 19:42
Причина редактирования: Используй тэг code
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 2.9.2009, 17:19
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3274
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Полностью код приведи...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
nZil
  опции профиля:
сообщение 2.9.2009, 17:22
Сообщение #5


Студент
*

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

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




Репутация:   0  


эмм... Метод setSqlQuery(const QString &query) это и есть весь код класса
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
nZil
  опции профиля:
сообщение 2.9.2009, 22:16
Сообщение #6


Студент
*

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

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




Репутация:   0  


Я недавно начал писать на Qt и вообще на объектно-ориентированных языках, так что тонкостей не знаю. я что то не так делаю?
Что надо ещё какиенить методы перегрузить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.9.2009, 22:54
Сообщение #7


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

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

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




Репутация:   94  


nZil, приведи код и класса SqlRelationalTableModel (весь, и заголовочник и реализацию)
и приведи код использования и модели и приедствления.


Справка по тэгам
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
nZil
  опции профиля:
сообщение 3.9.2009, 11:39
Сообщение #8


Студент
*

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

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




Репутация:   0  


Описание класса:
#ifndef SQLRELATIONALTABLEMODEL_H
#define SQLRELATIONALTABLEMODEL_H

#include <QSqlRelationalTableModel>
#include <QSqlQuery>

class SqlRelationalTableModel : public QSqlRelationalTableModel
{
public:
    SqlRelationalTableModel();
    void setSqlQuery (const QString &query);
};

#endif // SQLRELATIONALTABLEMODEL_H

и его реализация:
#include "sqlrelationaltablemodel.h"

SqlRelationalTableModel::SqlRelationalTableModel()
{}
void SqlRelationalTableModel::setSqlQuery(const QString &query)
{
    this->setQuery(QSqlQuery(query));
}



создание модели и представления:
void MWindow::createWorkersTab()
{
    workersModel = new SqlRelationalTableModel;
    workersModel->setTable("workers");
    workersModel->setHeaderData(0, Qt::Horizontal, tr("Number in database"));
    workersModel->setHeaderData(1, Qt::Horizontal, tr("Surname"));
    //workersModel->setSqlQuery("SELECT id, incode, surname + \" \" + name + \" \" + lastname, birthdate, pseries, pnumber FROM workers");
    workersModel->select();

    workersView = new QTableView;
    workersView->setModel(workersModel);
    workersView->setSortingEnabled(true);
    workersView->setAlternatingRowColors(true);
    workersView->setShowGrid(false);
    workersView->setSelectionBehavior(QAbstractItemView::SelectRows);
    workersView->setSelectionMode(QAbstractItemView::SingleSelection);
    //workersView->verticalHeader()->hide();
    workersView->resizeColumnsToContents();
    workersView->setEditTriggers(QAbstractItemView::NoEditTriggers);

    main->addTab(workersView, QIcon (":/images/qt.png"), tr("Workers"));
}




Строка запроса закомментирована, ибо не правильно работает:(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 3.9.2009, 12:15
Сообщение #9


Мастер
******

Группа: Модератор
Сообщений: 3274
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


А как ты делал и у тебя не работало, так?
    workersModel = new SqlRelationalTableModel;
    workersModel->setSqlQuery("SELECT id, incode, surname + \" \" + name + \" \" + lastname, birthdate, pseries, pnumber FROM workers");

    workersView = new QTableView;
    // ...


Сообщение отредактировал ViGOur - 3.9.2009, 12:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
nZil
  опции профиля:
сообщение 3.9.2009, 12:28
Сообщение #10


Студент
*

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

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




Репутация:   0  


Цитата(ViGOur @ 3.9.2009, 12:15) *
А как ты делал и у тебя не работало, так?
    workersModel = new SqlRelationalTableModel;
    workersModel->setSqlQuery("SELECT id, incode, surname + \" \" + name + \" \" + lastname, birthdate, pseries, pnumber FROM workers");

    workersView = new QTableView;
    // ...


да
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 14.12.2017, 21:55