如何在 QT 中创建功能区组件?

Posted

技术标签:

【中文标题】如何在 QT 中创建功能区组件?【英文标题】:How do I go about creating a Ribbon component in QT? 【发布时间】:2020-05-01 10:10:07 【问题描述】:

功能区是以下组件:

我想使用 QtQuick (QML) 和 PySide2 作为后端来构建组件。


我教过的当前解决方案: 我知道我可以使用 TopBar 构建按钮,即:

我可以为三种不同类型的按钮创建三个不同的委托:

代表 1:

代表 2:

代表 3:

并通过在模型中指定为“类型”来更改它们。

----------------------------------------------- ----------

但是我该如何将它们组合在一起呢? 我教过: • ListView 只能有一个方向,所以我无法使用它来构建它。 • 网格视图,但它也有可能是一个方向的相同问题。

有人可以告诉我如何构建功能区组件吗?模型应该如何指定?

如何在底部添加按钮分组,即:

它应该根据组中按钮的数量自动扩展。

【问题讨论】:

尝试使用普通中继器? doc.qt.io/qt-5/qml-qtquick-repeater.html 您能简单介绍一下中继器方法吗? @hyde 【参考方案1】:

让我简要介绍一下你可以在这里做什么。

    slidesfontsparagraphs 创建单独的项目(.qml 文件)。它创建了关注点分离。

    将您在第一步中创建的那些项目排列在一个父项目中,该父项目只是通过锚定将它们连接在一起,或者可能只是在row 内。

    现在为每个项目设计。我们以slides为例

在这里您可以将项目排列成两行,第二行将包含slides,第一行将包含其余项目。

现在第一行可以分成两列 第一栏 -> new slide 第 2 列 -> layout, reset, section (这里如果你有类似的项目你可以使用中继器)

fontparagraph 的设计基本相同。您将它们划分为行和列,并将您的项目放入其中。

【讨论】:

非常感谢。这是一个很好的方法,我会试试这个。您能否简要介绍一下我如何才能使这种动态变化?例如:我想有一个“幻灯片”的模型:Name:“New Slide”,icon:“\u1586”,delegate:“BigButton”,action:“a.launch()” 等等on...鉴于此,它应该动态生成它... ------ 哪个更好:上述动态方法或您建议的静态方法?

以上是关于如何在 QT 中创建功能区组件?的主要内容,如果未能解决你的问题,请参考以下文章

Qt:如何在 qpushbutton 中创建超链接?

如何在 Qt 中创建类似 Textmate 的侧面板

如何在 QT5.6.1 中创建自定义按钮

如何在 C++/QT 中创建 Windows 服务?

如何在我的 Qt 窗口中创建一个“洞”?

如何在 C++ 或 Qt 中创建进程?