Інтеграція віджету в Qt Designer

Перш ніж ми зможемо використовувати наш віджет у Qt Designer, ми повинні повідомити його про це. Існує два підходи: підключення як "простого віджету" та як плагіна.

Виберіть пункт меню ToolsCustomEdit Custom Widget. Перед вами з'явиться діалогове вікно "Edit Custom Widgets".

Натисніть кнопку "New Widget".

Змініть ім'я класу MyCustomW >HexSpinBox та ім'я файлу заголовка mycustomw >hexspinbox.h.

Змініть "Size Hint" (60, 20).

Змініть "Size Policy" (Minimum, Fixed).

Після цього віджет з'явиться в секції "Custom W" Qt Designer .

інтеграція

Малюнок 5.6. Діалог "Edit Custom Widgets".

Перш за все, необхідно створити клас-нащадок від QW & iconditorplugin, а з вихідним кодом самого компонента - в паралельному каталозі iconeditor.

Заголовний файл плагіна:

Клас IconEditorPlugin є свого роду "фабрикою", яка виготовляє та випускає екземпляри віджету IconEditor. Функції плагіна використовуються середовищем Qt Designer для створення екземплярів класу та отримання необхідної інформації. Функція keys() повертає список віджетів, що "випускаються" плагіном-фабрикою. Наш плагін "випускає" лише один віджет - IconEditor. Функцію create() викликає Qt Designer , коли потрібно створити екземпляр віджету. Перший аргумент - ім'я класу віджету. У цьому прикладі ми можемо ігнорувати його, оскільки наш плагін обслуговує лише один клас. Всі інші функції також отримують ім'я класу в першому аргументі. Функція includeFile() повертає ім'я файлу заголовка віджета, який представляє плагін. Ім'я файлу заголовка підключається до коду, створюваного утилітоюuic. Функція isContainer() повертає true, якщо віджетможе містити в собі інші віджети, інакше – false. Наприклад, QFrame може містити інші віджети. У нашому випадку повертається false, оскільки немає сенсу робити з IconEditor контейнер для інших віджетів. Строго говорячи, будь-який віджет може бути майданчиком для розміщення інших віджетів, але Qt Designer відкидає таку можливість, якщо isContainer() повертає false. Функція group() повертає ім'я секції палітри компонентів, де буде розміщено віджет. Якщо такої секції поки що немає, вона буде створена автоматично. Функція iconSet() повертає піктограму панелі компонентів. Функція toolTip() повертає текст підказки, яка з'являється при наведенні вказівника миші на іконку віджету на панелі компонентів. Функція whatsThis() повертає текст, який з'являється на запит "What's This?" Qt Designer-а. Файл із вихідним текстом плагіна повинен завершуватися викликом макросу Q_EXPORT_PLUGIN().

Файл .pro для складання плагіна виглядає приблизно так:

Передбачається, що змінна оточення QTDIR містить шлях до каталогу, куди було встановлено бібліотеку Qt. Коли ви збираєте плагін командоюmake абоnmake, він автоматично встановлюється до каталогу plugins Qt Designer -а.

Після складання плагіна ви можете використовувати IconEditor в Qt Designer так само, як і вбудовані віджети Qt.