如何在 QWidget 中创建 QToolBar?

新手上路,请多包涵

我正在尝试在 QToolBar 中添加 QWidget 。但我希望它的功能能够像 QMainWindow 一样工作。

Apparently I can not create QToolBar in a QWidget , and using setAllowedAreas does not work with QWidget : it only works with QMainWindow 。另外,我的 QWidgetQMainWindow 中。

如何为我的小部件创建 QToolBar

原文由 njporwal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

allowedAreas 属性 仅在工具栏是 QMainWindow 的子级时有效。您可以将工具栏添加到布局中,但用户不能移动它。但是,您仍然可以通过编程方式重新定位它。

要将其添加到继承 QWidget 的虚构类的布局中:

 void SomeWidget::setupWidgetUi()
{
    toolLayout = new QBoxLayout(QBoxLayout::TopToBottom, this);
    //set margins to zero so the toolbar touches the widget's edges
    toolLayout->setContentsMargins(0, 0, 0, 0);

    toolbar = new QToolBar;
    toolLayout->addWidget(toolbar);

    //use a different layout for the contents so it has normal margins
    contentsLayout = new ...
    toolLayout->addLayout(contentsLayout);

    //more initialization here
 }

更改工具栏的方向需要在 setDirection toolbarLayout 附加步骤,例如:

 toolbar->setOrientation(Qt::Vertical);
toolbarLayout->setDirection(QBoxLayout::LeftToRight);
//the toolbar is now on the left side of the widget, oriented vertically

原文由 jonspaceharper 发布,翻译遵循 CC BY-SA 4.0 许可协议

QToolBar 是一个小部件。这就是为什么,您可以通过调用 addWidget 进行布局或将 QToolBar 父级设置为您的小部件,将 QToolBar 添加到任何其他小部件。

正如您在 QToolBar setAllowedAreas 方法的文档中看到的:

此属性包含可以放置工具栏的区域。

默认值为 Qt::AllToolBarAreas。

此属性仅在工具栏位于 QMainWindow 中时才有意义。

这就是为什么如果工具栏不在 QMainWindow 中,则无法使用 setAllowedAreas 的原因。

原文由 Kirill Chernikov 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏