crossplatform.ru

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


  Ответ в Как добиться подобного внешнего вида?
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
Флинт Дата 22.11.2011, 14:33
  boudingRect() помог все нормально вычислить и отмасштабировать, спасибо. Осталось разобраться как сделать теги (которые подчеркнуты) нажимабельными по типу ссылки.

Sokoloff Дата 21.11.2011, 14:34
 
Цитата(Флинт @ 21.11.2011, 11:47) *
Цитата(wiz29 @ 11.11.2011, 17:33) *
попробуй использовать QString QFontMetrics::elidedText ( const QString & text, Qt::TextElideMode mode, int width, int flags = 0 ) const


Добавляет три точки, где текст обрывается, не знаю чем это может помочь 8)

Пробывал через QFontMetrics узнавать высоту каждой строчки, но не понял как вычислить высоту абзаца.

Надо установить свойство uniformRowHeights в false. Перекрыть SizeHint.
Для получения размера текста можешь использовать параметр boundingRect в QPainter::drawText.
Флинт Дата 21.11.2011, 10:47
 
Цитата(wiz29 @ 11.11.2011, 17:33) *
попробуй использовать QString QFontMetrics::elidedText ( const QString & text, Qt::TextElideMode mode, int width, int flags = 0 ) const


Добавляет три точки, где текст обрывается, не знаю чем это может помочь 8)

Пробывал через QFontMetrics узнавать высоту каждой строчки, но не понял как вычислить высоту абзаца.
wiz29 Дата 11.11.2011, 16:33
  попробуй использовать QString QFontMetrics::elidedText ( const QString & text, Qt::TextElideMode mode, int width, int flags = 0 ) const
Алексей1153 Дата 11.11.2011, 11:08
  нужно как-то передавать каждому элементу его разрешённую прямоугольную область, чтобы он за неё не выходил

посмотри, есть ли у метода drawText флага, который делает клиппинг по прямоугольнику

а чтобы ничего не обрезалось, эти прямоугольники надо так подгонять
Флинт Дата 11.11.2011, 9:50
  Возник следующий вопрос. Делегат %

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


Размещаю элементы подобным образом в методе 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;
}


Куда копать?
vankleef Дата 4.10.2011, 18:40
 
Цитата(Denis.Rassvetniy @ 3.10.2011, 23:38) *
Цитата(Флинт @ 3.10.2011, 10:55) *
Модель пока сделал, наследуясь от QSqlQueryModel, для представления мне кажется лучше всего подойдет ListView, но как заполнить один его элемент данными из нескольких ячеек таблицы? И как добиться нужного форматирования этих данных?

Напишите свой делегат (наследуйте от QStyledItemDelegate), переопределите в нём функцию paint().


да, на мой взгляд создание своего делегата тут как раз уместно, т.к. используешь базы данных
Denis.Rassvetniy Дата 3.10.2011, 22:38
 
Цитата(Флинт @ 3.10.2011, 10:55) *
Модель пока сделал, наследуясь от QSqlQueryModel, для представления мне кажется лучше всего подойдет ListView, но как заполнить один его элемент данными из нескольких ячеек таблицы? И как добиться нужного форматирования этих данных?

Напишите свой делегат (наследуйте от QStyledItemDelegate), переопределите в нём функцию paint().
Флинт Дата 3.10.2011, 10:57
  Это идея, спасибо.
RazrFalcon Дата 3.10.2011, 10:41
  Я бы создал класс QWidget. В нем бы расположил все что нужно для одной ячейки. Потом бы брал данные из БД и задавал значение элементов QWidget. А потом добавлял бы готовый QWidget в ячейку QListWidget.

Вот пример того, что получилось у меня:
http://kde-apps.org/CONTENT/content-pre2/144956-2.png
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.4.2024, 2:38