Qt自定义小部件错误

Qt custom widget error

本文关键字:错误 小部 自定义 Qt      更新时间:2023-10-16

我正在尝试在Qt中制作简单的自定义小部件(名为DingButton,继承自QPushButton)。我做的,在Qt Designer上可以看到。但当我编译包含这个自定义小部件的项目(名为DingDemo)时,我得到了一个错误:

未定义对`DingButton::DingButton(QWidget*)的引用

它指向ui_DingDemo.h:中的下一个代码

class Ui_DingDemo
{
public:
    DingButton *dingbutton;
    void setupUi(QWidget *DingDemo)
    {
        if (DingDemo->objectName().isEmpty())
            DingDemo->setObjectName(QString::fromUtf8("DingDemo"));
        DingDemo->resize(226, 97);
        dingbutton = new DingButton(DingDemo);  //<---------error here

我在互联网上搜索了一下,并试图遵循下一条指令:

  • 添加行:

    LIBS+=-Wl,-rpath,/usr/local/qt4/plugins/designer-L/usr/local/qt4/plugins/designer-L libding-button-plugin.so

到.pro文件

  • 创建.pri文件并将其包含到.pro中

但这并不成功。

为什么会发生这种情况?如何度过难关?

请帮我

丁-丁-丁-plugin.pro

CONFIG += plugin release designer
TEMPLATE = lib
TARGET = $$qtLibraryTarget($$TARGET)
target.path = $$[QT_INSTALL_PLUGINS]/designer
INSTALLS += target
INCLUDEPATH += .
LIBS += -Wl,-rpath,/usr/local/qt4/plugins/designer -L/usr/local/qt4/plugins/designer -l     libding-button-plugin.so
HEADERS += DingButton.h DingButtonPlugin.h
SOURCES += DingButton.cpp DingButtonPlugin.cpp

编辑:DingButton::DingButton(QWidget*)实现

您必须实现这个构造函数,它在发生错误的行中被调用。

DingButton(QWidget *widget = 0);//In your DingButton class
DingButton::DingButton(QWidget *widget) : QWidget(widget) //In your .cpp
{
}