【问题标题】:Qt custom widget errorQt 自定义小部件错误
【发布时间】:2014-04-15 09:27:26
【问题描述】:

我正在尝试在 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 中

但这并不成功。

为什么会这样?以及如何度过这个难关?

请帮帮我

ding-button-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::DingButton(QWidget*) 实现了吗?
  • @KeillRandor 是的,实现了 DingButton::DingButton(QWidget* )

标签: c++ qt


【解决方案1】:

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

DingButton(QWidget *widget = 0);//In your DingButton class

DingButton::DingButton(QWidget *widget) : QWidget(widget) //In your .cpp
{

}

【讨论】:

  • 应该是 DingButton::DingButton(QWidget *widget) : QWidget(widget) 正确继承父级。
  • 哎呀忘了这部分,你当然是对的。谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
  • 2018-05-16
  • 2021-02-27
  • 2022-07-02
  • 2014-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多