crossplatform.ru

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

4 страниц V  < 1 2 3 4 >  
Тема закрытаНачать новую тему
> [Решено] Cоздание собственной модели для отображения таблицы., наследник QAbstractTableModel
AD
  опции профиля:
сообщение 17.3.2009, 16:45
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Таблица удобнее пользователю. Да и нагляднее.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.3.2009, 16:45
Сообщение #12


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

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

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




Репутация:   94  


т.е. что-то такое:

 Р В Р’ Р’ Р’ Р’ Р в‚¬Р В РЎВ˜Р В Р’µР Р…ьшено Р Т‘Р С• 39%
Прикрепленное изображение
434 x 312 (4.25 килобайт)

да?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 17.3.2009, 16:51
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(Litkevich Yuriy @ 17.3.2009, 16:45) *
т.е. что-то такое:

 Р В Р’ Р’ Р’ Р’ Р в‚¬Р В РЎВ˜Р В Р’µР Р…ьшено Р Т‘Р С• 77%
Прикрепленное изображение
434 x 312 (4.25 килобайт)

да?

Если перенести номера в отдельный столбик, то да, такое. Я именно так и показывал.

Лицензия | Путь к ней | Дата создания | Список номеров (отдельный столбик, а не в том же, что и лицензия)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.3.2009, 16:56
Сообщение #14


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

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

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




Репутация:   94  


для случая таблицы, а не дерева можно сделать так:
  QSqlDataBase        db;
  QString            qstr;
  QSqlQueryModel    *m;
  QTableView        *view;
  
    db = QSqlDatabase::database("myDb");
    qstr = "SELECT a.licence_name, a.create_date, a.serialnumber FROM MyTable a ORDER BY a.licence_name";
    
    m = new QSqlQueryModel;
    m->setQuery(qstr, db);
    m->setHeaderData(0, Qt::Horizontal, tr("Лицензия"));
    m->setHeaderData(1, Qt::Horizontal, tr("Дата"));
    m->setHeaderData(2, Qt::Horizontal, tr("Серийный\nномер"));
    
    view = new  QTableView(this);
    view->setModel(m);
но это без имени файла лицензии.
Для создания имени у меня есть два варианта, оба я непробовал:
1) Использовать возможности БД, если таковые есть, по формированию запроса так, чтобы можно было выкинуть из строки все что до последнего слэша.
2) Использовать между представлением и моделью еще одну - промежуточную модель.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 18.3.2009, 9:03
Сообщение #15


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(Litkevich Yuriy @ 17.3.2009, 16:56) *
но это без имени файла лицензии.
Для создания имени у меня есть два варианта, оба я непробовал:
1) Использовать возможности БД, если таковые есть, по формированию запроса так, чтобы можно было выкинуть из строки все что до последнего слэша.
2) Использовать между представлением и моделью еще одну - промежуточную модель.

Спасибо, попробую.
Смысл в том, что хочу именно с путем и файлом лицензии. А как через промежуточную модель или через SQL? Но в любом случае, спасибо. Данный вариант уже кое-что! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 18.3.2009, 9:48
Сообщение #16


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Блин, получилось не так, как я хотел. Есть желание, чтобы это выглядело так, две записи, в которых в последнем столбце перечислены серийные номера, принадлежащие данным лицензиям. А исходя из приведенного кода получилось то же, что если сделать обычную выборку без первого столбца.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 18.3.2009, 11:52
Сообщение #17


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Кое-что из ассистента почитал и сделал так:
/// Отображение таблицы статистики
/// modelView - QSqlTableModel*
/// listView - QList<ViewLicence*>
void StatisticView::viewTable()
{
    int count = listView.size();
    for(register int row=0; row<listView.size(); ++row)
    {
        ViewLicence* view = listView[row];
        QSqlRecord record;
        record.setValue(QString("licence_name"), view -> licenceName());
        record.setValue(QString("create_date"), view -> createDate());
        record.setValue(QString("serialnumber"), view -> listNumbers());
        bool flag = modelView -> insertRecord(row, record);
        int sss2 = 0;
    }
    tblLicences -> setModel(modelView);
}

Но на экране вижу только квадрати и цифру 1. В чем ошибка? Где и что я не так делаю? :(

Кто-нибудь может помочь? Очень и очень нужно. Буду благодарен за помощь!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 18.3.2009, 11:57
Сообщение #18


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


Почему не сделать свою модель и не обрабатывать нужный столбец "Серийный номер"?
Все данные есть, запросил view серийные номера для нужной строки - открыл нужный файл, прочитал их в строку через ";" (закешировать можно), вернул из data().
Или в конструкторе модели сделал запрос, загнал все в список структуры (попутно читая серийные номера из файлов), а дальше в data() возвращай?
Или я чего не понял? ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 18.3.2009, 12:53
Сообщение #19


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(BRE @ 18.3.2009, 11:57) *
Все данные есть, запросил view серийные номера для нужной строки - открыл нужный файл, прочитал их в строку через ";" (закешировать можно), вернул из data().
Или в конструкторе модели сделал запрос, загнал все в список структуры (попутно читая серийные номера из файлов), а дальше в data() возвращай?
Или я чего не понял? ;)

Не понял, как это реализовать? Как понять, свою модель? На основе модели QSqlTableModel? Или что-то еще?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 18.3.2009, 13:21
Сообщение #20


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

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




Репутация:   44  


Цитата(AD @ 18.3.2009, 12:53) *
Не понял, как это реализовать? Как понять, свою модель? На основе модели QSqlTableModel? Или что-то еще?

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

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 8.7.2025, 1:41