【问题标题】:Qt vertical menuQt 垂直菜单
【发布时间】:2012-09-18 15:43:25
【问题描述】:

我正在尝试使用具有以下示例结构的 Qt 应用程序创建一个垂直菜单:

语言 |--> 选择 |--> 英文 |--> 加载 图片 |--> 保存格式 |--> JPEG |--> 位图 |--> JPEG 质量 |--> 超高 |--> 高 |--> 低

等等。理想情况下,我希望使用QMenuBar 不仅实现顶级菜单项,而且还实现所有子菜单。我还想利用可用于触发这些不同选项的信号/插槽。一些选项是 On 和 Off 种类,并且能够用复选标记或其他东西快速反映所选的选择将是理想的。

我可以对QMenuBar 进行布局,并让它在位于QVBoxLayout 中时显示在顶部或底部。但是,我想要做的是将其方向从水平更改为垂直。我是 Qt 编程的新手,我的搜索没有产生正确的函数或小部件来获得此功能。

感谢所有指针和提示。

这是一张图片,显示了我想要完成的工作。

用户已选择“传感器显示”并显示 3 个子选项(压力、平移和倾斜、辐射),并且默认情况下会移至第一个选项(压力),该选项恰好有 2 个子选项(开,关)。

子菜单都需要横向显示,而不是我在上面的文本菜单中描述的“树形视图”。

问候

【问题讨论】:

    标签: qt menu


    【解决方案1】:

    我已经实现了一个类似于您上图的菜单。我完全用 QML 构建它,并集成了来自 C++ 源代码的所有数据模型、信号和插槽。

    查看RSS News Example 作为起点。在此示例中,他们向您展示了如何使用 QML 构建水平菜单。

    制作上述模型的基础是:

    • 您需要构建三个 QML 列表视图(在数据模型中填充列表,格式化列表中每个元素在委托中的外观)
    • 逻辑可以用 C++ 或 QML 编写,如果您的列表非常长且复杂,我建议使用基于状态的方法。单击第一列中的一个列表元素将必须显示/隐藏/滚动第二个列表,依此类推。

    如果您将 QML 列表视图元素连接到适当的信号和插槽,则可以在 C++ 中执行上述所有操作。

    希望对你有帮助。

    【讨论】:

    • 感谢您的回复,很遗憾我不能在这部分应用程序中使用 QML,但我认为这确实让我知道了如何去做。我正在研究子类化 QTreeView 并使用 QAbstractItemModel 来实现显示我的数据的视图/模型结构。
    猜你喜欢
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2015-06-28
    • 1970-01-01
    相关资源
    最近更新 更多