Шаг 226.
Библиотека Qt.
Отображение строки

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

    В объектах класса QPainter методом QPainter::setFont() устанавливаются объекты класса QFont. В классе QPainter имеются 7 различных вариантов метода drawText() для отображения текста установленным шрифтом, наиболее часто используются следующие два:

  1. drawText(int x, int y, const QString& str) отображает текст str. Координату левого края текста задает параметр x, а параметр y указывает координату базовой линии.

        В листинге приведена реализация вывода на экран строки текста, результат показан на рис. 1.


    Рис.1. Отображение строки

    QPainter painter(this);
    painter.setFont(QFont("Times", 25, QFont::Normal));
    painter.drawText(40, 60, "Строка текста");  

        Файлы приложения можно взять здесь.

  2. drawText(const QPoint& pt, const QString&) или drawText(const QPointF& pt, const QString&) отличается от вышеприведенного метода тем, что в первом параметре вместо x и y передается объект точки QPoint.

        В листинге приведена реализация вывода на экран строки текста, результат показан на рис. 2.


    Рис.2. Отображение строки с тенью

    QPainter painter(this);
    painter.setFont(QFont("Times", 25, QFont::Bold));
    QPoint p1(20,50),p2(23,53);
    //вывод строки черным цветом в позиции p1
    painter.drawText(p1, "Строка текста");
    QPen pen(Qt::green);
    painter.setPen(pen);
    //вывод строки зеленым цветом в позиции p2
    painter.drawText(p2, "Строка текста");  

        Файлы приложения можно взять здесь.

  3. drawText(const QRect& r, int flags, const QString& str) или drawText(const QRectF& r, int flags, const QString& str) отображает текст str в заданной параметром r прямоугольной области. C помощью параметра flags можно повлиять на размещение и отображение текста. Значение этого параметра получается комбинацией значений, указанных в табл. 1 шага 35 и табл. 1 (приведенной ниже), с помощью логической операции | (ИЛИ).

    Таблица 1. Перечисления языка Си TextFlag пространства имен Qt
    Константа
    Значение
    Описание
    TextSingleLine
    0x0100 Игнорирует знаки новой строки (знак \n)
    TextDontClip
    0x0200 Гарантирует, что в том случае, если текст будет выступать за пределы, он не будет обрезан
    TextExpandTabs
    0x0400 Замещает знаки табуляции \t равносильным пространством
    TextShowMnemonic
    0x0800 Знак & не будет отображаться, а следующий за ним символ будет подчеркнут и получит клавишу быстрого доступа
    TextWordWrap
    0x1000 Если строка выходит за приделы заданного прямоугольника, она будет перенесена

        В листинге строка текста выводится по центру. Результат показан на рис. 3.


    Рис.3. Отображение строки в прямоугольной области

        Выводимая строка не помещается полностью в прямоугольной области, задаваемой переменной r, поэтому осуществляется переход на новую строку с помощью флага TextWordWrap. Метод drawRect() вызывается для отображения границ прямоугольной области.

    QPainter painter(this);
    QRect r = QRect(0, 0, 150, 200);
    painter.setFont(QFont("Times", 25, QFont::Normal));
    painter.drawRect(r);
    painter.drawText(r, Qt::AlignCenter | Qt::TextWordWrap, "Строка текста");

        Файлы приложения можно взять здесь.

    На следующем шаге рассмотрим отображение строки c показом разрыва.




Предыдущий шаг Содержание Следующий шаг