crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Как получить реальную высоту строки текста для расчета высоты занимаемой области?
trdm
  опции профиля:
сообщение 30.9.2008, 11:36
Сообщение #1


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

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




Репутация:   6  


Необходимо расчитать высоту ячейки по имеющемся в неё тексту.
Использую такой очевидный код:
/// Форматирование текста ячейки, одновременно расчет её высоты..
qreal uoReportDoc::doFormatCellText(uoCell* cell, QFont* font, QFontMetricsF& fm, const qreal& collWidth)
{
    qreal cellHeight = 0.0;
    // задачка не из простых...
    QString cellStr = cell->getText();
    if (cellStr.isEmpty())
        return cellHeight;

    int lenAll = cellStr.length();
    QChar chrLS = '\n';
    int pos = cellStr.indexOf(chrLS, 0);

    if (pos != -1){
        QStringList strList = cellStr.split(chrLS);
        cellHeight = fm.height()*strList.size();
    }
    return cellHeight;
}


Выкручиваюсь собственно вот так:
/// Форматирование текста ячейки, одновременно расчет её высоты..
qreal uoReportDoc::doFormatCellText(uoCell* cell, QFont* font, QFontMetricsF& fm, const qreal& collWidth)
{
    qreal cellHeight = 0.0;
    // задачка не из простых...
    QString cellStr = cell->getText();
    if (cellStr.isEmpty())
        return cellHeight;

    int lenAll = cellStr.length();
    QChar chrLS = '\n';
    int pos = cellStr.indexOf(chrLS, 0);

    if (pos != -1){
        QStringList strList = cellStr.split(chrLS);
        ///cellHeight = fm.height()*strList.size();
        cellHeight = (fm.lineSpacing()-fm.descent()) *strList.size() + fm.descent(); <<<<<<<<<<<<<<<<<<<<<<<<<<<
    }
    return cellHeight;
}

Но всеравно чувствую, что это выход через задницу и он даст где-то сбой.

Сообщение отредактировал trdm - 30.9.2008, 11:37
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 30.9.2008, 17:11
Сообщение #2


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

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




Репутация:   6  


блин? а на эту тему кто-нить что-нибудь ответит? :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 6.10.2008, 23:47
Сообщение #3


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

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




Репутация:   6  


ну вот я и попал с этим методом конкретно....
Форматировал с учетом одного шрифта, а рисовал с помощью другого....
И еще удивлялся, откуда такой результат О_о......
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.1.2025, 9:58