crossplatform.ru

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

> Как добиться подобного внешнего вида?
Флинт
  опции профиля:
сообщение 3.10.2011, 9:55
Сообщение #1


Новичок


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

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




Репутация:   0  


Вот собственно скриншот макета:

Данные берутся из базы данных, за заголовок, тэги, дату и пр. отвечает своя ячейка в базе данных.
Модель пока сделал, наследуясь от QSqlQueryModel, для представления мне кажется лучше всего подойдет ListView, но как заполнить один его элемент данными из нескольких ячеек таблицы? И как добиться нужного форматирования этих данных? Можно ли сделать это делегатом, или нужно писать свое представление? Направьте в нужную сторону пожалуйста :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Флинт
  опции профиля:
сообщение 11.11.2011, 9:50
Сообщение #2


Новичок


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

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




Репутация:   0  


Возник следующий вопрос. Делегат %

Возник следующий вопрос. Делегат свой я сделал и даже добился нужного внешнего вида, проблемы начинаются, когда в средней строчке, где планируется размещать комментарии появляется слишком много текста, а соседние строки текста ничего не знают о размере друг друга и ничего не масштабируется, примерно так:


Размещаю элементы подобным образом в методе paint делегата:
painter->setFont(QFont("Arial", 10));
         painter->drawText(QRect(rect.left()+25, rect.top()+rect.height()/4, rect.width(), rect.height()/2),
                              Qt::TextWordWrap, comment);
         painter->setFont(QFont("Arial", 12));
         painter->setPen(Qt::gray);
         painter->drawText(QRect(rect.left()+25, rect.top()+rect.height()/2, rect.width(), rect.height()/2),
                              opt.displayAlignment, "Метки: "+ tag);
         painter->setPen(QColor(80,0,180));
          painter->drawText(QRect(rect.left()+rect.width()/2, rect.top()+rect.height()/2, rect.width(), rect.height()/2),
                              opt.displayAlignment, date.toString("dd.MM.yyyy"));


Метод sizeHint пока такой:
QSize SfDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    QSize result = QStyledItemDelegate::sizeHint(option, index);
    result.setHeight(result.height()*5);
    return result;
}


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

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 23.11.2024, 18:39