ECMAddQtDesignerPlugin¶
This module provides the ecm_add_qtdesignerplugin
function for generating
Qt Designer plugins for custom widgets. Each of those widgets is described
using a second function ecm_qtdesignerplugin_widget
.
ecm_add_qtdesignerplugin(<target_name>
NAME <name>
WIDGETS <widgetid> [<widgetid2> [...]]
LINK_LIBRARIES <lib> [<lib2> [...]]
INSTALL_DESTINATION <install_path>
[OUTPUT_NAME <output_name>]
[DEFAULT_GROUP <group>]
[DEFAULT_HEADER_CASE <SAME_CASE|LOWER_CASE|UPPER_CASE>]
[DEFAULT_HEADER_EXTENSION <header_extension>]
[DEFAULT_ICON_DIR <icon_dir>]
[INCLUDE_FILES <include_file> [<include_file2> [...]]]
[SOURCES <src> [<src2> [...]]]
[COMPONENT <component>]
)
NAME
specifies the base name to use in the generated sources.
The default is <target_name>.
WIDGETS
specifies the widgets the plugin should support. Each widget has
to be defined before by a call of ecm_qtdesignerplugin_widget
with the
respective <widgetid>, in a scope including the current call.
LINK_LIBRARIES
specifies the libraries to link against. This will be at
least the library providing the widget class(es).
INSTALL_DESTINATION
specifies where the generated plugin binary will be
installed.
OUTPUT_NAME
specifies the name of the plugin binary. The default is
“<target_name>”.
DEFAULT_GROUP
specifies the default group in Qt Designer where the
widgets will be placed. The default is “Custom”.
DEFAULT_HEADER_CASE
specifies how the name of the header is derived from
the widget class name. The default is “LOWER_CASE”.
DEFAULT_HEADER_EXTENSION
specifies what file name extension is used for
the header file derived from the class name. The default is “h”.
DEFAULT_ICON_DIR
specifies what file name extension is used for
the header file derived from the class name. The default is “pics”.
INCLUDE_FILES
specifies additional include files to include with the
generated source file. This can be needed for custom code used in
initializing or creating widgets.
SOURCES
specifies additional source files to build the plugin from.
This can be needed to support custom code used in initializing or
creating widgets.
COMPONENT
specifies the installation component name with which the install
rules for the generated plugin are associated.
ecm_qtdesignerplugin_widget(<widgetid>
[CLASS_NAME <class_name>]
[INCLUDE_FILE <include_file>]
[CONTAINER]
[ICON <iconfile>]
[TOOLTIP <tooltip>]
[WHATSTHIS <whatsthis>]
[GROUP <group>]
[CREATE_WIDGET_CODE_FROM_VARIABLE <create_widget_code_variable>]
[INITIALIZE_CODE_FROM_VARIABLE <initialize_code_variable]
[DOM_XML_FROM_VARIABLE <dom_xml_variable>]
[IMPL_CLASS_NAME <impl_class_name>]
[CONSTRUCTOR_ARGS_CODE <constructor_args_code>]
[CONSTRUCTOR_ARGS_CODE_FROM_VARIABLE <constructor_args_code_variable>]
)
CLASS_NAME
specifies the name of the widget class, including namespaces.
The default is “<widgetid>”.
INCLUDE_FILE
specifies the include file to use for the class of this
widget. The default is derived from <class_name> as configured by the
DEFAULT_HEADER_*
options of ecm_add_qtdesignerplugin
, also replacing
any namespace separators with “/”.
CONTAINER
specifies, if set, that this widget is a container
for other widgets.
ICON
specifies the icon file to use as symbol for this widget.
The default is “{lowercased <class_name>}.png” in the default icons dir as
configured by the DEFAULT_ICON_DIR
option of
ecm_add_qtdesignerplugin
, if such a file exists.
TOOLTIP
specifies the tooltip text to use for this widget. Default is
“<class_name> Widget”.
WHATSTHIS
specifies the What’s-This text to use for this widget.
Defaults to the tooltip.
GROUP
specifies the group in Qt Designer where the widget will be placed.
The default is set as configured by the DEFAULT_GROUP
option of
ecm_add_qtdesignerplugin
.
CREATE_WIDGET_CODE_FROM_VARIABLE
specifies the variable to get from the
C++ code to use as factory code to create an instance of the widget,
for the override of
QDesignerCustomWidgetInterface::createWidget(QWidget* parent)
.
The default is “return new <impl_class_name><constructor_args_code>;”.
INITIALIZE_CODE_FROM_VARIABLE
specifies the variable to get from the C++
code to use with the override of
QDesignerCustomWidgetInterface::initialize(QDesignerFormEditorInterface* core)
.
The code has to use the present class member m_initialized
to track and
update the state. The default code simply sets m_initialized
to
true
, if it was not before.
DOM_XML_FROM_VARIABLE
specifies the variable to get from the string to
use with the optional override of
QDesignerCustomWidgetInterface::domXml()
.
Default does not override.
IMPL_CLASS_NAME
specifies the name of the widget class to use for the
widget instance with Qt Designer. The default is “<class_name>”.
CONSTRUCTOR_ARGS_CODE
specifies the C++ code to use for the constructor
arguments with the default of CREATE_WIDGET_CODE_FROM_VARIABLE
. Note
that the parentheses are required. The default is “(parent)”.
CONSTRUCTOR_ARGS_CODE_FROM_VARIABLE
specifies the variable to get from
the C++ code instead of passing it directly via CONSTRUCTOR_ARGS_CODE
.
This can be needed if the code is more complex and e.g. includes “;” chars.
Example usage:
ecm_qtdesignerplugin_widget(FooWidget
TOOLTIP "Enables to browse foo."
GROUP "Views (Foo)"
)
set(BarWidget_CREATE_WIDGET_CODE
"
auto* widget = new BarWidget(parent);
widget->setBar("Example bar");
return widget;
")
ecm_qtdesignerplugin_widget(BarWidget
TOOLTIP "Displays bars."
GROUP "Display (Foo)"
CREATE_WIDGET_CODE_FROM_VARIABLE BarWidget_CREATE_WIDGET_CODE
)
ecm_add_qtdesignerplugin(foowidgets
NAME FooWidgets
OUTPUT_NAME foo2widgets
WIDGETS
FooWidget
BarWidget
LINK_LIBRARIES
Foo::Widgets
INSTALL_DESTINATION "${KDE_INSTALL_QTPLUGINDIR}/designer"
COMPONENT Devel
)
Since 5.62.0.