Надписи

   
На этом шаге рассмотрим класс виджета надписи QLabel.

   
Виджет надписи используется для показа состояния приложения или поясняющего текста и представляет собой текстовое поле, текст которого не подлежит изменению со стороны пользователя. Информация, отображаемая этим виджетом, может изменяться только самим приложением. Таким образом, приложение может сообщить пользователю о своем изменившемся состоянии, но пользователь не может изменить эту информацию в самом виджете. Класс виджета надписи QLabel определен в заголовочном файле QLabel.

   
Виджет надписи унаследован от класса QFrame и может иметь рамку. Отображаемая им информация может быть текстового, графического или анимационного характера, для передачи которой используются слоты setText(), setPixmap() и setMovie().

   
Расположением текста можно управлять при помощи метода setAlignment(). Метод использует большое количество флагов, некоторые из которых указаны в табл. 1. Обратите внимание, что значения не пересекаются, и это позволяет комбинировать их друг с другом с помощью логической операции | (ИЛИ). Наглядным примером служит значение AlignCenter, составленное из значений AlignVCenter и AlignHCenter.

Таблица 1. Значения флагов AlignmentFlag пространства имен Qt

КонстантаОписание
AlignLeftРасположение текста слева
AlignRightРасположение текста справа
AlignHCenterЦентровка текста по горизонтали
AlignJustifyРастягивание текста по всей ширине
AlignTopРасположение текста вверху
AlignBottomРасположение текста внизу
AlignVCenterЦентровка текста по вертикали
AlignCenterЦентровка теста по вертикали и горизонтали

   
Приведем пример использования надписи для вывода текста, оформленного в формате HTML (рис. 1), анимации (рис. 2) и растрового изображения (рис. 3).


Рис.1. Отображение информации виджетом надписи в формате HTML


Рис.2. Отображение анимации виджетом надписи


Рис.3. Отображение графической информации виджетом надписи

   
Рассмотрим как реализовано это приложение:

#include <QApplication>
#include <QWidget>
#include <QLabel>
#include <QMovie>

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    app.setApplicationDisplayName("Надпись");
    //при создании виджета надписи lbl,
    //первым параметром в конструктор
    //передается текст в формате HTML
    QLabel lbl1("<H1><CENTER>QLabel — HTML-формат</CENTER></H1>"
                "<H2><CENTER>Картинка</CENTER><H2>"
                "<CENTER><IMG BORDER=\"0\" SRC=\"koala.jpg\"></CENTER>"
                "<H2><CENTER>Список</CENTER><H2>"
                "<OL><LI>Один</LI>"
                " <LI>Два</LI>"
                " <LI>Три</LI>"
                "</OL>"
                "<H2><CENTER>Начертание</CENTER><H2>"
                "<CENTER><FONT COLOR=RED>"
                " <B>Жирный</B>, <I>Курсив</I>, <U>Подчеркнутый</U>"
                "</FONT></CENTER>"
                "<H2><CENTER>Таблица</CENTER></H2>"
                "<CENTER> <TABLE>"
                " <TR BGCOLOR=#ff00ff>"
                " <TD>1,1</TD><TD>1,2</TD><TD>1,3</TD><TD>1,4</TD>"
                " </TR>"
                " <TR BGCOLOR=YELLOW>"
                " <TD>2,1</TD><TD>2,2</TD><TD>2,3</TD><TD>2,4</TD>"
                " </TR>"
                " <TR BGCOLOR=#00f000>"
                " <TD>3,1</TD><TD>3,2</TD><TD>3,3</TD><TD>3,4</TD>"
                " </TR>"
                "</TABLE> </CENTER>"
    );
    lbl1.show(); //отображаем надпись на экране
    //создаем новую надпись
    QLabel lbl2;
    //создаем объект анимации
    QMovie *m = new QMovie("sun.gif");
    //передаем с помощью слота setMovie файл sun.gif в надпись
    lbl2.setMovie(m);
    //запускаем анимацию
    m->start();
    lbl2.show();
    //создается объект растрового изображения QPixmap
    QPixmap pix;
    //вызовом метода load() в него загружается файл Penguins.jpg
    pix.load("Penguins.jpg");
    //создаем виджет надписи
    QLabel lbl3;
    //вызовом метода resize() размеры виджета надписи
    //приводятся в соответствие с размерами растрового изображения
    lbl3.resize(pix.size());
    //вызов метода setPixmap()
    //устанавливает в виджете само растровое изображение
    lbl3.setPixmap(pix);
    lbl3.show();

    return app.exec();
}

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



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

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