Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: VAP от Май 05, 2010, 20:21



Название: Рисование в делегате: Размещение текста по центру ячейки
Отправлено: VAP от Май 05, 2010, 20:21
Доброго времени суток!
Прошу подсказки как разместить текст в делегате строго по центру ячейки. У меня рисуется немного левее центра.
[code cpp]
void ScaleItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
                                          const QModelIndex &index) const
{
    if (!index.isValid())
        return;
 
    int data = index.data(Qt::DisplayRole).toInt();
    QString  text = index.data(Qt::DisplayRole).toString();
    QSize sh = sizeHint(option, index);
    QFontMetrics fm = option.fontMetrics;

    if (data == 0)
        QPixmap pm(":images/red.png");
        painter->drawPixmap(option.rect, pm);
        /*в таком варианте рисуется в верхнем левом углу
        painter->drawText(QRect(option.rect.x(), option.rect.y(), sh.width(), sh.height()),     
        Qt::AlignCenter, elidedText(fm, sh.width(), Qt::ElideMiddle, text));
        */
        /*нашел на форуме, но рисуется не строго по центру*/
        painter->drawText(option.rect, QString("%1").arg(text), QTextOption(Qt::AlignCenter));
}
[/code cpp]


Название: Re: Рисование в делегате: Размещение текста по центру ячейки
Отправлено: VAP от Май 06, 2010, 19:27
Ради интереса попробовал в версии Qt 4.3.0 и получил идеальный результат:
(http://www.imageup.ru/img116/0605341010.jpg)

А в Qt 4.5.0 получается вот так:
(http://www.imageup.ru/img116/06051341013.jpg)

Мелочь, но не приятная, однако.