На этом шаге рассмотрим класс QTabWidget.
При чтении книг вы, возможно, используете закладки, которые помогают вам быстро открыть книгу в нужном месте. Ситуация с компьютерными вкладками аналогична, только с той лишь разницей, что они используются для быстрой смены диалоговых окон. При выборе вкладки в окне будет отображен закрепленный за ней виджет. Вкладки могут содержать как текст, так и растровое изображение.
Основное назначение вкладок — разгрузить сложное диалоговое окно, имеющее большое количество опций, разделив его на серию логически скомпонованных диалоговых подокон.
Страницы можно делать доступными и недоступными. Чтобы сделать страницу недоступной, нужно вызвать метод setTabEnabled() и передать ему значение false. Вызовом слота setCurrentIndex() можно сделать вкладку текущей.
Пример, показанный на рис. 1, содержит вкладки Android, Linux, Windows, MacOSX и MSDOS. При выборе каждой из вкладок происходит отображение виджета, закрепленного за ней.
Рис.1. Пример оформления вкладок
Рассмотрим текст приложения:
//создается набор вкладок QTabWidget tab; QStringList lst; lst << "Android" << "Linux" << "Windows" << "MacOSX" << "MSDOS"; foreach(QString str, lst) { //создаем виджет, который используется для //редактирования и отображения обычного текста QPlainTextEdit *edt= new QPlainTextEdit(&tab); //установим режим только для чтения edt->setReadOnly(true); //создаем объект для работы с файлом, передав в //конструктор строку, содержащую имя файла QFile file(str+".txt"); //открываем файл только для чтения file.open(QFile::ReadOnly); //создаем объект для чтения текстовых данных //(например, из текстового файла) QTextStream in(&file); //методом readAll() считываем все содержимое файла //метод setPlainText() устанавливает содержимое виджета //QPlainTextEdit edt->setPlainText((in.readAll())); //вызовом метода addTab() в цикле добавляются новые вкладки //в первом параметре этого метода передается указатель //на виджет, который должен отображаться при выборе //вкладки, во втором — растровое изображение, //а в третьем — текст вкладки tab.addTab(edt, QPixmap(str + ".jpg"), str); } tab.resize(500, 400); tab.show();
Файлы приложения можно взять здесь.
На следующем шаге рассмотрим класс QToolBox.