c++ - 如何在 QT Creator 中推广自定义小部件

标签 c++ qt widget

在 qt 5.2.1 中,我创建了一些自定义小部件,例如按钮。传统上有两种方法可以做到这一点。您可以升级现有的小部件。并更改/添加功能。或者从头开始创建自定义小部件。我用过后者。

但是,在某些情况下,我想使用我的自定义小部件,但通过推广更改它的某些功能。通常的做法是添加一个小部件,并对其进行推广。然而,当创建一种新的升级小部件时,必须选择一个基类。在可以完成此操作的对话框中,仅列出了默认小部件。

是否可以将自定义小部件添加到此列表?

问候,

劳瑞斯

编辑:

我玩过很多次。现在突然之间,一个自定义小部件被添加到基类列表中。但我仍然不知道我是如何添加它的。以及为什么这是列表中显示的唯一自定义小部件。

最佳答案

这似乎是 Qt Creator 中的一个错误。奇怪的是,一种变通方法是将小部件两次添加到小部件库导出的小部件列表中:

IOSwidgets::IOSwidgets(QObject *parent)
    : QObject(parent)
{

    m_widgets.append(new aircraftAttitudePlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new alfabeticKeypadPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new arrowedFramePlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new buttonWidgetPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new dataButtonPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new frameWidgetPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new headingDialPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new imageWidgetPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new labelWidgetPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new linkedButtonWidgetPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new linkedLabelWidgetPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new linkedSliderWidgetPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new NavButtonPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new numericKeypadPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new repositionWidgetPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new runwayInformationPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new slewWidgetPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new sliderWidgetPlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new WeightBalancePlugin(this));
    m_widgets.append(m_widgets.last());
    m_widgets.append(new WindshearMicroburstLateralPlugin(this));
    m_widgets.append(m_widgets.last());
}

希望这可以让下一个遇到这个问题的人省去我发现这个问题所花费的艰苦努力和大量时间:)。

关于c++ - 如何在 QT Creator 中推广自定义小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25684189/

相关文章:

c++ - 创建一个函数来放置子部件

c++ - POD 的 WinAPI union 双关语到基本类型 : Implementation dependent or standard compliant?

C++ equal(==) 重载、快捷方式或比较所有属性的最佳方法

c++ - 如何在 C++ 项目的 Cmake 文件中添加 Mac OS 框架

跨平台项目中的 C# 与 C++

javascript - CKEditor 如何在小部件中允许 href ="javascript:void(0)"

c++ - 英特尔 <math.h> vs C <math.h>?

qt - 如何编译这个qt程序(没有任何pro文件)?

c++ - 从 C++ 设置变量时 QML 内存泄漏

android - 如何接收 Intent。 ACTION_PACKAGE_ADDED Intent 。应用小部件中的 ACTION_PACKAGE_REMOVED?