Qt Designer的自定义动作插件

时间:2012-01-18 01:04:43

标签: qt qt-designer

我计划在“暂停”和“设置”按钮之间的工具栏(下方)中使用间隔符,使“设置”按钮在QToolBar内右对齐。下面的分隔符没有切割它。

Toolbar in need of spacer

以下方法显然有效,但我还没有尝试过:

QWidget* spacer = new QWidget();
spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
// toolBar is a pointer to an existing toolbar
toolBar->addWidget(spacer);
toolBar->addAction("Right-aligned button");

(感谢http://www.ffuts.org/blog/right-aligning-a-button-in-a-qtoolbar/

Qt Designer似乎不允许向QToolBar添加小部件,尽管QToolBar确实有addWidget()方法,如上所述。因此,如果我希望能够使用Qt Designer(使用插件而不是促销)将spacer添加到我的工具栏中,我应该将QActionQWidgetQWidgetAction作为子类吗?有没有办法为Qt Designer编写自定义动作插件?

1 个答案:

答案 0 :(得分:0)

你不能将QAction子类化,并期望在Qt Creator / Designer中优雅地使用它。它使用ui中的标签并将它们添加到菜单和工具栏中。您不能像其他小部件一样指定class =“customclass”元素和条目。因为动作的处理方式不同,所以你甚至不能将它们子类化,以便完成。

至于QWidgetAction / QWidget,如果你知道我的意思,你和QActionGroup在同一条船上。 (我个人认为这在表单设计师的设计中是一个很大的忽视!)所以在设计师中预览它也是出来的。

你可以做的最后一件事(看不见的选项3)是QToolbar子类化,但是你可以将它子类化,但是,除了普通的旧QToolbar之外,你不会在desinger中看到任何东西。这并不意味着它完全取决于我要来的地方:

真正的答案必须是看不见的选项4,将QToolbar子类化为设计器插件(如果你不知道那里的那个,你需要大量编码,我实际上不知道任何有设计师插件)表单设计器插件不仅仅是经常,但你可以找到某人的子类工具栏,并将其变成一个插件自己为你节省一步(qt创建者甚至有一个模板),然后在qt中使用它设计师和你的设置。

我知道这个问题是2年前被问到的,但是当我看到一个悬而未决的问题时,我会想到那些可能会读到并被沮丧的搜索者,所以如果我能做出贡献我就做...我希望我做到了至少帮助你或其他任何人走上正轨,祝大家好运!