我最近发现Qt支持自定义小部件,并且有些网站提供这种小部件(如Qt-Apps)。如果它是相关的,我有兴趣获取this小部件。
我已经下载了它的源代码,我已经提取了它等等。我还没有尝试构建它,但我感兴趣的是在窗口左侧的小部件列表中有这个小部件。 Qt Designer,以便我可以将它用于我的应用程序。
我要么不知道如何搜索我要找的东西,要么根本不存在。请帮我解决这个问题。
答案 0 :(得分:3)
有两种方法:
一个。使用promotion
最简单的方法。此方法直接获取源而不构建它。
B中。 Build a plugin lib for Designer
这有点乏味......
要简短,假设您有一个所需的类(小部件):CustomWidget
customwidget.cpp
和customwidget.h
。
CustomWidgetPlugin
并公开继承QObject
和QDesignerCustomWidgetInterface
并重新实现一些虚拟功能。示例:
customwidget.h
:
#include <QDesignerCustomWidgetInterface>
#include "customwidget.h"
class CustomWidgetPlugin : public QObject, public QDesignerCustomWidgetInterface
{
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface) // note this line, it tell moc that the second base class is a plugin interface.
public:
CustomWidget(QObject *parent = 0);
QString name() const;
QString includeFile() const;
QString group() const;
QIcon icon() const;
QString toolTip() const;
QString whatsThis() const;
bool isContainer() const;
QWidget *createWidget(QWidget *parent);
};
customwidget.cpp
:
构造
CustomWidget::CustomWidgetPlugin(QObject *parent)
: QObject(parent)
{
}
名字getter:
QString CustomWidgetPlugin::name() const
{
return "CustomWidget";
}
headerfile getter:
QString CustomWidgetPlugin::includeFile() const
{
return "customwidget.h";
}
组名获取者:
QString CustomWidgetPlugin::group() const
{
return tr("New Group");
}
(组名定义小部件所属的位置,如果名称不适合任何默认组,则会创建一个新组)
图标(用于设计师中显示的图标):
QIcon CustomWidgetPlugin::icon() const
{
return QIcon(":/images/icon.png");
}
小工具的工具提示:
QString CustomWidgetPlugin::toolTip() const
{
return tr("This is a widget, got it?");
}
这是什么的信息:
QString CustomWidgetPlugin::whatsThis() const
{
return tr("A widget, already said.");
}
定义它是否是“容器”(可以容纳另一个小部件):
bool CustomWidgetPlugin::isContainer() const
{
return false;
}
工厂成员函数:
QWidget *CustomWidgetPlugin::createWidget(QWidget *parent)
{
return new CustomWidget(parent);
}
在customwidget.cpp
文件末尾添加此宏:
Q_EXPORT_PLUGIN2(customwidgetplugin , CustomWidgetPlugin) // (the widget name, the class name)
它使插件可用于Qt deisgner。
最后,在您的.pro
文件中:
TEMPLATE = lib
CONFIG += designer plugin release
HEADERS = ../customwidget.h \
customwidgetplugin.h
SOURCES = ../customwidget.cpp \
customwidgetplugin.cpp
RESOURCES = customwidget.qrc
DESTDIR = $(QTDIR)/plugins/designer #assume QTDIR environment variable is set to the directory where Qt is installed.
构建此项目后,下次打开Qt设计器时,您将看到小部件。
参考:使用Qt 4进行C ++ GUI编程