QT 4: программирование GUI на С++
Шрифт:
Вот и все! Сгенерированный компилятором uic программный код будет содержать оператор #include hexspinbox.h вместо <QSpinBox> и будет инстанцировать HexSpinBox. В Qt Designer виджет HexSpinBox будет представлен виджетом QSpinBox, позволяя нам устанавливать любые свойства QSpinBox (например, допустимый диапазон значений и текущее значение).
Рис. 5.6. Диалоговое окно для создания пользовательских виджетов Qt Designer.
Недостатками метода продвижения являются недоступность в Qt Designer свойств, характерных для пользовательского виджета, и то, что пользовательский виджет представляется в QtDesigner не своим изображением. Обе эти проблемы могут быть решены при применении метода подключения.
Метод подключения требует создания библиотеки подключаемых модулей, которую Qt Designer может загружать во время выполнения и использовать для создания экземпляров виджетов. В этом случае при редактировании формы и ее просмотре в Qt Designer будет использован реальный виджет, и благодаря мета—объектной системе Qt можно динамически получать список его свойств в Qt Designer. Для демонстрации этого метода мы с его помощью выполним интеграцию редактора пиктограмм IconEditor, описанного в предыдущем разделе.
Во-первых, мы должны создать подкласс QDesignerCustomWidgetInterface и переопределить несколько виртуальных функций. Мы предположим, что исходный файл подключаемого модуля расположен в каталоге с именем iconeditorplugin, а исходный текст программы IconEditor расположен в параллельном каталоге с именем iconeditor.
Ниже приводится определение класса:
Подкласс IconEditorPlugin является фабрикой класса (factory class), который инкапсулирует виджет IconEditor. Он является наследником классов QObject и QDesignerCustomWidgetIterface и использует макрос Q_INTERFACES, указывая компилятору moc на то, что второй базовый класс представляет собой подключаемый интерфейс. Его функции применяются Qt Designer для создания экземпляров класса и получения информации о нем.
IconEditorPlugin имеет тривиальный конструктор.
Функция name возвращает имя подключаемого виджета.
Функция includeFile возвращает имя заголовочного файла для заданного виджета, который инкапсулирован в подключаемом модуле. Заголовочный файл включается в программный код, сгенерированный компилятором uic.
Функция group возвращает имя группы на панели виджетов, к которой принадлежит пользовательский виджет. Если это имя еще не используется, Qt Designer coздаст новую группу для виджета.
Функция icon возвращает пиктограмму которая будет использоваться для представления пользовательского виджета на панели виджетов Qt Designer. В нашем случае мы предполагаем, что IconEditorPlugin имеет ресурсный файл Qt, содержащий соответствующий элемент для изображения редактора пиктограмм.
Функция toolTip возвращает всплывающую подсказку, которая появляется, когда мышка находится на пользовательском виджете в панели виджетов Qt Designer.
Функция whatsThis возвращает текст «What's This?» (что это?) для отображения в Qt Designer.
Функция isContainer возвращает true, если данный виджет может содержать другие виджеты; в противном случае он возвращает false. Например, QFrame представляет собой виджет, который может содержать другие виджеты. В целом любой виджет может содержать другие виджеты, но Qt Designer не позволяет это делать, если isContainer возвращает false.
Каратила
Детективы:
боевики
рейтинг книги
На Берлин!
2. Моё пространственное убежище
Фантастика:
фэнтези
боевая фантастика
рпг
постапокалипсис
рейтинг книги
Лекарь Империи 6
6. Лекарь Империи
Фантастика:
городское фэнтези
боевая фантастика
аниме
попаданцы
рейтинг книги
Возвращение императора
6. Стэн
Фантастика:
боевая фантастика
рейтинг книги
Ты - наша
1. Наша
Любовные романы:
современные любовные романы
эро литература
рейтинг книги
Кодекс Охотника. Книга XXVI
26. Кодекс Охотника
Фантастика:
попаданцы
рейтинг книги
Вернувшийся: Новая жизнь. Том I
1. Вернувшийся
Фантастика:
боевая фантастика
рпг
рейтинг книги
На границе империй. Том 10. Часть 10
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
рейтинг книги
Трапеция
Проза:
современная проза
рейтинг книги
Виконт. Книга 2. Обретение силы
2. Псевдоним `Испанец`
Фантастика:
боевая фантастика
попаданцы
рпг
рейтинг книги
Наследник
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
рейтинг книги