На этом шаге рассмотрим класс виджета надписи 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(); }
Файлы приложения можно взять Предыдущий шаг
Содержание
Следующий шаг