繁体   English   中英

将小部件添加到Qt Designer

[英]Adding widgets to Qt Designer

我最近发现Qt支持自定义小部件,并且有些网站提供这种小部件(如Qt-Apps )。 如果它是相关的,我有兴趣获得这个小部件。

我已经下载了它的源代码,我已经提取了它等等。我还没有尝试构建它,但我感兴趣的是在Qt Designer左侧的widget列表中有这个小部件,所以我可以使用它我的应用程序。

我要么不知道如何搜索我要找的东西,要么根本不存在。 请帮我解决这个问题。

有两种方法:

A.使用促销

最简单的方法。 此方法直接获取源而不构建它。

B. 为Designer构建一个插件库

这有点单调乏味......


为了CustomWidget它,假设你有一个所需的类(widget): CustomWidget with customwidget.cppcustomwidget.h

  1. 创建一个新的工厂类,可以将其CustomWidgetPlugin并公开继承QObjectQDesignerCustomWidgetInterface并重新实现一些虚函数。

例:

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)
{
}

名字吸气剂:

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;
}

工厂memeber功能:

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编程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM