【问题标题】:How to style the checkbox in a QListView so that the label is under the checkbox?如何在 QListView 中设置复选框的样式以使标签位于复选框下方?
【发布时间】:2011-04-11 15:41:32
【问题描述】:

我有一个水平的QListView,我想使用样式表自定义复选框和标签,将标签放在复选框下方,而不是右侧。

怎么做?

【问题讨论】:

    标签: qt stylesheet qlistview qcheckbox


    【解决方案1】:

    我不确定这是否适用于您的情况,但我来寻找类似的东西(QTreeWidget 复选框)并发现它有效:

    tree_widget.setStyleSheet("QTreeView::indicator:checked { background:red; }");
    

    我想QListView 也会有一个indicator,但我现在无法测试。试试这个:

    QListView::indicator {
        subcontrol-position: top center;
    }
    

    【讨论】:

    • 你是对的,因为它们都是 QAbstractItemView 的子类。但是支持不好,例如,您的第二个示例不起作用。然而,第一个确实如此(对于 QListView)。
    【解决方案2】:
    QCheckBox::indicator {
        subcontrol-position: top center;
    }
    

    将完成这项工作。该解决方案很丑陋但有效。不确定它是否总是有效 - 您可能需要使用 QCheckBox 的布局策略或查看是否可以为它预先分配足够的空间。再次 - 没有承诺。它适用于我的 Qt 4.7.1 测试示例

    【讨论】:

    • 好吧,如果你想使用 QSS,它似乎不会发生,但是如果你真的想这样做,使用 QStylePainter 并实现你的拥有自己的小部件,它将采用 QComboBox 元素(例如 QStyle::SE_CheckBoxIndicator)将其放置在您想要的任何位置并为您的目标平台原生呈现。
    【解决方案3】:

    因此,唯一的解决方案是使用您的自定义复选框和标签创建一个样式化的项目委托,只需修改以下代码: http://discussion.forum.nokia.com/forum/showthread.php?217027-Display-widget-as-items-in-a-QListView&p=813138&viewfull=1#post813138

    【讨论】:

    • 链接似乎已损坏
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2014-09-14
    相关资源
    最近更新 更多