Отображение строки с разрывом

   
На этом шаге рассмотрим отображение строки с разрывом.

   
Бывает, что область, предназначенная для показа текста, не может отобразить весь текст целиком. Подобные ситуации часто наблюдаются, например, при отображении путей каталогов. В данном случае можно сделать разрыв в тексте, заполнив его точками, и тем самым показать, что отображенный текст не является полным. Эту возможность можно реализовать на базе метода elidedText() класса QFontMetrics. На рис. 1 показано окно с текстом, при изменении размеров которого, в случае невозможности размещения текста целиком, будет показан разрыв в середине текста, заполненный точками.


Рис.1. Текст с разрывом

class ElidedText : public QWidget {
protected:
    virtual void paintEvent(QPaintEvent*)
    {
        //создаем строку с длинным текстом (объект str)
        QString  str = "Бывает, что область, предназначенная для показа
                        текста, не может отобразить весь текст целиком.";
        /*строку str вместе с двумя другими параметрами передаем
        в метод elideText(), т. е. передаем режим показа разрыва в середине
        Qt::ElideMiddle и текущую ширину виджета. Этот метод возвращает текст
        новой строки strElided*/
        QString  strElided = fontMetrics().elidedText(str, Qt::ElideMiddle, width());
        QPainter painter(this);
        painter.setFont(QFont("Comic Sans MS", 12, QFont::Normal));
        //текст отображаем при помощи метода drawText()
        painter.drawText(rect(), strElided);
    }

public:
    ElidedText(QWidget* pwgt = 0) : QWidget(pwgt)
    {
    }
};

   
Файлы приложения можно взять Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий