自定义窗口小部件:创建复杂窗口小部件,提供在窗体编辑器中使用的布局

时间:2017-05-01 15:22:10

标签: c++ qt qt5 qt-creator

我正在尝试创建一个自定义窗口小部件插件(如here所述),它将提供一些控件,以及一个容器,其布局我希望暴露给QT Creator' s表格编辑。

在我的widget的插件界面中,我修改了isContainer()函数以返回true。

bool MyWidgetPlugin::isContainer() const
{
    return true;
}

此自定义窗口小部件的UI文件的Object Inspector的类列与此类似:

- QWidget       <- The Custom Widget
| - QPushButton
| - QWidget     <- This is the widget who's layout I'd like to expose to the form editor.

这允许我在表单编辑器中将新小部件放到我的自定义小部件上,但不考虑布局。新添加的窗口小部件可能会被放在其他窗口小部件之上,包括自定义窗口小部件中内置的窗口小部件,我无法更改自定义窗口小部件的布局。

很明显,表单编辑器目前无法知道内部窗口小部件是否用于提供布局,但我不确定如何执行此操作并且无法找到示例充当容器的自定义窗口小部件。我查看了Container Extension Example,但它明确指出它适用于多页面小部件,因此我认为有一个更好的解决方案可以实现我想要实现的目标。

如何创建此自定义窗口小部件,以便将内部窗口小部件的布局公开给表单编辑器,或者我应该以不同的方式接近它?

更新:通过完成我一直避免的Container Extension Example,我能够获得所需的功能。我只是将窗口小部件视为一个多页面窗口小部件,它总是返回同一页面。

但是,这会在窗口小部件的表单编辑器上下文菜单中启用多页操作,例如插入页面,这会产生不良副作用。使用此操作会导致创建一个无法与之交互的小空白窗口小部件,并将其置于自定义窗口小部件的右上角。虽然这是一个小问题,但它阻止我将此解决方案作为答案发布。

0 个答案:

没有答案