通过代码添加具有可编辑属性的小部件

时间:2014-09-23 09:07:50

标签: c++ qt widget

我创建了一个自定义小部件插件,它是一个容器(它重载了qframe)。在这个容器中,我想通过代码添加子代。我成功地做到了这一点。但是,孩子们在设计师中无法编辑或点击。我知道让孩子们可以通过设计师进行编辑,他们应该作为代码添加到XML中,但我不知道如何做到这一点。

有人会知道是否可以这样做?

我的代码,arrowedFrame作为我的自定义窗口小部件插件类:

arrowedFrame::arrowedFrame(QWidget *parent, Qt::WindowFlags f) : (parent, f)
{
    QLabel* testLabel = new QLabel(this);
} 

这会添加一个新的标签,作为会员(对不起,我还不能发布图片,但想象一个带有标签的盒子)。但正如我所说,这个标签根本不可以通过设计师编辑。

1 个答案:

答案 0 :(得分:0)

我发现的解决方案是通过this指南。并在初始化函数中添加一些内容:

void PlotContainerPlugin::initialize(QDesignerFormEditorInterface *formEditor)
{
    if (initialized)
        return;

    QExtensionManager *manager = formEditor->extensionManager();

    myFormEditor = formEditor;

    Q_ASSERT(manager != 0);
    manager->registerExtensions(factory, Q_TYPEID(QDesignerContainerExtension));

    initialized = true;
}

第一部分只是得到一位经理:

QExtensionManager *manager = formEditor->extensionManager();

然后我们使用这个经理,

manager->registerExtensions(factory, Q_TYPEID(QDesignerContainerExtension));

向设计师注册插件(我的情况下的绘图仪)。

希望这会有所帮助:)