css - QTableView 小部件的 Qt 样式表中有哪些可用选项?

标签 css qt pyqt5 qtableview

我四处搜寻有关 Qt 小部件(特别是 QTableView 小部件)样式表的详细文档。以下是我发现的一些有用的(尽管不完整)资源:

  1. https://doc.qt.io/qt-5/stylesheet-reference.html
  2. QTableView/QTableWidget grid stylesheet - grid line width
  3. How to set stylesheet for the current item in QTableView

我只是想获取 QTableView 样式表选项的详细(完整)列表。该文档在哪里?我必须从整个网络上获取一些信息才能拼凑出完整的样式表,这似乎很奇怪。

这是我现在使用的样式表的示例:

QTableView {
    color: black;
    gridline-color: black;
    border-color: rgb(242, 128, 133);
    font: 10px;
}
QHeaderView::section {
    background-color: rgb(71, 153, 176);
    color: white;
    height: 35px;
    font: 14px;
}
QTableView::item:focus{
    border: 2px solid rgb(242, 128, 133);
    background-color: rgb(255, 254, 229);
}
QScrollBar:vertical {
    background: rgb(188, 224, 235);
}
 QScrollBar::handle:vertical {
    background: rgb(71, 153, 176);
 }
QScrollBar:horizontal {
    background: rgb(188, 224, 235);
}
 QScrollBar::handle:horizontal {
    background: rgb(71, 153, 176);
 }

这是我仍然无法使用样式表完成的事情:

  1. 我想更改按组选择单元格时的颜色。
  2. 此样式表隐藏了我表格上的“行”
  3. 我也想编辑行的样式表。

在这里您可以看到在组中选择时单元格的行为: enter image description here 我希望蓝色单元格与粉红色轮廓单元格的样式相匹配。

QTableView 小部件有哪些选项?我尝试过 QTableView::rows、QTableView::selection 和许多其他方法,但都没有成功。

最佳答案

处理 QSS(Qt 样式表)时需要考虑的一个重要方面是,在复杂小部件上设置任何属性时,所有其他基本属性必须 设置。

文档清楚地说明了“常见”小部件(例如 QComboBox 或 QScrollBar),但没有说明问题较多的小部件(例如 QHeaderView)的属性(该小部件负责显示行或列的部分标题 )。

最重要的是,严格相关属性,例如宽度高度(并非所有小部件都支持这些属性)必须两者都设置。

如果您想为样式表中的标题部分设置特定高度,则必须也设置宽度。

QHeaderView::section {
    background-color: rgb(71, 153, 176);
    color: white;
    height: 35px;
    width: 150px; 
    font: 14px;
}

不幸的是,使用 QSS 设置大小有两个缺点:

  • 尺寸是固定的并且基于“像素”尺寸;
  • 自动禁用文本省略(至少对于 QHeaderView 和普通样式);

这给我们带来了一个重要的方面:样式表必须谨慎使用(意识到这一点的唯一方法是经验和研究源代码)。几乎总是不鼓励在样式表中设置明确的尺寸,特别是当这些尺寸涉及文本显示时。如果要设置标题的默认尺寸,应使用 setDefaultSectionSize()相反。


最后,即使OP解决了问题,为了清楚起见,我也会添加以下内容。
元素 View 的选择颜色可以通过两种不同的方式设置:

  1. 设置::item伪选择器颜色:

    QTableView::item:selected {
        background-color: rgb(242, 128, 133);
    }
    

    上面将设置元素的背景并完全覆盖样式绘画行为(取决于样式),包括基于调色板的任何进一步的“花式”绘画。简而言之,它可能是纯色背景色。

  2. 设置元素 View 选择器和 selection-background-color 属性:

    QTableView {
        ...
        selection-background-color: rgb(242, 128, 133);
    }
    

    上面将设置表Highlight调色板 Angular 色,然后它将恢复为默认样式绘画,提供该样式使用的任何“花哨”绘画。

注意:样式使用调色板颜色作为引用,有时它们通过使用自定义(通常基于像素图)绘画来完全忽略它们。如上所述,selection-background-color方法仍然在很大程度上依赖于样式,这意味着绘画将被样式部分(或完全)覆盖,可能会忽略或更改所选颜色。如果选择颜色比应用程序/系统样式一致性更重要,则应使用 ::item:selected 选择器。

关于css - QTableView 小部件的 Qt 样式表中有哪些可用选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70702182/

相关文章:

css - 在 C/C++/Perl for Linux/Mac 中是否有任何 CSS 压缩器?

HTML 输入表单错误消息闪烁

c++ - QListView 显示空行 ?? (Qt)

python - 如何使用 QToolButton 或 QPushButton 将本地保存的 GeoJSON 加载到带有 QTableWidget 或 QTableTree 的 Qt 对话框中?

python - PySide2 QUiLoader 返回一个空窗口

html - 在 "html"元素上设置 100% 高度不起作用...

javascript - CSS 悬停代码不起作用

c++ - 从源代码构建 Qt 5.8 - 配置 : Unknown command line option '-c++11'

linux - 简介 QT,QML 应用程序,在 Linux 系统上(达芬奇板)

python - 用钢笔在 Canvas 上删除