Warning, /frameworks/kdesignerplugin/README.md is written in an unsupported language. File is not indexed.
0001 # KDesignerPlugin 0002 0003 Integrating custom widgets with Qt Designer 0004 0005 This tool is deprecated. In your CMake-based build system use [ECMAddQtDesignerPlugin](https://api.kde.org/ecm/module/ECMAddQtDesignerPlugin.html) from "Extra CMake Modules" instead. 0006 0007 ## Introduction 0008 0009 This framework provides a utility (kgendesignerplugin) that can be used to 0010 generate plugins for Qt Designer from ini-style description files. 0011 0012 ## kgendesignerplugin 0013 0014 To use kgendesignerplugin in your own project, add 0015 0016 find_package(KF5DesignerPlugin) 0017 0018 to your CMakeLists.txt file, and use the 0019 kf5designerplugin\_add\_widget\_files macro. For example, you might do 0020 0021 find_package(Qt5Designer) 0022 find_package(KF5DesignerPlugin NO_MODULE) 0023 include_directories(${Qt5Designer_INCLUDE_DIRS}) 0024 if(Qt5Designer_FOUND AND KF5DesignerPlugin_FOUND) 0025 set(foowidgets_SRCS) 0026 kf5designerplugin_add_widget_files(foowidgets_SRCS 0027 foo.widgets 0028 ) 0029 qt5_add_resources(foowidgets_SRCS 0030 foowidgets.qrc # preview images 0031 ) 0032 add_library(foowidgets MODULE ${foowidgets_SRCS}) 0033 target_link_libraries(foowidgets 0034 foo # library containing the actual widget classes 0035 ) 0036 install(TARGETS foowidgets DESTINATION ${QT_PLUGIN_INSTALL_DIR}/designer) 0037 endif() 0038 0039 foo.widgets is an ini-style configuration file (see the KConfig 0040 framework for format details) describing the widgets exported by the 0041 plugin. It must include a [Global] section providing a PluginName entry 0042 (the value of which must be a valid C++ class name). For example, 0043 0044 [Global] 0045 PluginName=FooWidgets 0046 0047 This section can also list additional headers that should be included 0048 for the plugin code to work, for example preview classes (see ImplClass 0049 documentation below), with the Includes entry. It can also specify a 0050 default value for the Group option (see below) with the DefaultGroup 0051 entry. 0052 0053 [Global] 0054 PluginName=FooWidgets 0055 Includes=classpreviews.h,otherinclude.h 0056 DefaultGroup=Foo Widgets 0057 0058 In addition, it should have a section for each widget you wish to 0059 include in the plugin. For example, if you have a class FooView (that 0060 inherits QWidget), whose header file is fooview.h, you could have the 0061 section 0062 0063 [FooView] 0064 IncludeFile=fooviewwidget.h 0065 ImplClass=FooViewPreview 0066 Group=Views (Foo) 0067 0068 The implementation of every method of QDesignerCustomWidgetInterface can 0069 be controlled using options similar to the Group entry in the above 0070 example, which causes the group() method to return "Views (Foo)". 0071 0072 kgendesignerplugin attempts to pick sensible defaults for these values: 0073 0074 - IncludeFile: would default to "fooview.h" if it were omitted from the 0075 example 0076 - Group: defaults to the value of DefaultGroup in the [Global] section, 0077 which itself defaults to "Custom" 0078 - ToolTip: defaults to "FooView Widget" in the example 0079 - WhatsThis: defaults to "FooView Widget" in the example 0080 - IsContainer: defaults to false 0081 - CreateWidget: defaults to `return new ImplClass ConstructorArgs` where 0082 ImplClass and ConstructorArgs are entries (see below) 0083 - DomXml: defaults to the value of 0084 QDesignerCustomWidgetInterface::domXml() 0085 - Initialize: the default simply sets the mInitialized variable to true 0086 if it is not already 0087 0088 Note that no Icon entry is given above, instead you should provide an 0089 icon name with IconName; this defaults to ":/pics/fooview.png" in the 0090 above example. You should include this image in a resource file. 0091 0092 If your class requires arguments other than the parent widget, or you 0093 need to use a different class for previewing the widget in Qt Designer 0094 (FooViewPreview in the above example), rather than setting CreateWidget 0095 you can use some combination of ImplClass and ConstructorArgs: 0096 0097 - ImplClass: would default to FooView if it were omitted from the 0098 example 0099 - ConstructorArgs: defaults to (parent) - note that the parentheses 0100 are required 0101 0102