Вход/Регистрация
QT 4: программирование GUI на С++
вернуться

Саммерфилд Марк

Шрифт:

10 {

11 return "iconeditor.h";

12 }

Функция includeFile возвращает имя заголовочного файла для заданного виджета, который инкапсулирован в подключаемом модуле. Заголовочный файл включается в программный код, сгенерированный компилятором uic.

13 QString IconEditorPlugin::group const

14 {

15 return tr("Image Manipulation Widgets");

16 }

Функция group возвращает имя группы на панели виджетов, к которой принадлежит пользовательский виджет. Если это имя еще не используется, Qt Designer coздаст новую группу для виджета.

17 QIcon IconEditorPlugin::icon const

18 {

19 return QIcon(":/images/iconeditor.png");

20 }

Функция icon возвращает пиктограмму которая будет использоваться для представления пользовательского виджета на панели виджетов Qt Designer. В нашем случае мы предполагаем, что IconEditorPlugin имеет ресурсный файл Qt, содержащий соответствующий элемент для изображения редактора пиктограмм.

21 QString IconEditorPlugin::toolTip const

22 {

23 return tr("An icon editor widget");

24 }

Функция toolTip возвращает всплывающую подсказку, которая появляется, когда мышка находится на пользовательском виджете в панели виджетов Qt Designer.

25 QString IconEditorPlugin::whatsThis const

26 {

27 return tr("This widget is presented in Chapter 5 of <i>C++ GUI "

28 "Programming with Qt 4</i> as an example of a custom Qt "

29 "widget.");

30 }

Функция whatsThis возвращает текст «What's This?» (что это?) для отображения в Qt Designer.

31 bool IconEditorPlugin::isContainer const

32 {

33 return false;

34 }

Функция isContainer возвращает true, если данный виджет может содержать другие виджеты; в противном случае он возвращает false. Например, QFrame представляет собой виджет, который может содержать другие виджеты. В целом любой виджет может содержать другие виджеты, но Qt Designer не позволяет это делать, если isContainer возвращает false.

35 QWidget *IconEditorPlugin::createWidget(QWidget *parent)

36 {

37 return new IconEditor(parent);

38 }

Функция createWidget вызывается Qt Designer для создания экземпляра класса виджета для указанного родительского виджета.

39 Q_EXPORT_PLUGIN2(iconeditorplugin, IconEditorPlugin)

В конце исходного файла реализации класса подключаемого модуля мы должны использовать макрос Q_EXPORT_PLUGIN2, чтобы сделать его доступным для Qt Designer. Первый аргумент — назначаемое нами имя подключаемого модуля, второй аргумент — имя класса, который его реализует.

Используемый для построения подключаемого модуля файл .pго выглядит следующим образом:

TEMPLATE = lib

CONFIG += designer plugin release

HEADERS = ../iconeditor/iconeditor.h \

iconeditorplugin.h

SOURCES = ../iconeditor/iconeditor.cpp \

iconeditorplugin.cpp

RESOURCES = iconeditorplugin.qrc

DESTDIR = $(QTDIR)/plugins/designer

Файл .pro предполагает, что переменная окружения QTDIR установлена на каталог, где располагается Qt. Когда вы вводите команду make или nmake для построения подключаемого модуля, он автоматически устанавливается в каталог plugins Qt Designer. Поле построения подключаемого модуля виджет IconEditor мoжeт использоваться в Qt Designer таким же образом как, любые встроенные виджеты Qt.

Если требуется интегрировать в Qt Designer несколько пользовательских виджетов, вы можете либо создать отдельный подключаемый модуль для каждого из них, либо объединить все в один подключаемый модуль, реализуя интерфейс QDesignerCustomWidgetCollectionInterface.

Двойная буферизация

Двойная буферизация является методом программирования графического пользовательского интерфейса, при котором изображение виджета формируется вне экрана в виде пиксельной карты, и затем эта пиксельная карта выводится на экран. В ранних версиях Qt этот метод часто использовался для предотвращения мерцания изображения и для построения более быстрого пользовательского интерфейса.

  • Читать дальше
  • 1
  • ...
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: