簡體   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