【问题标题】:How to set QTableWidget upper left corner using a background image?如何使用背景图片设置QTableWidget左上角?
【发布时间】:2017-01-03 10:03:38
【问题描述】:

如何使用背景图片设置QTableWidget左上角?现在它是白色的。 (如下图所示)

这是我的样式表代码:

QWidget {
    background-image: url(src/bg.jpg);
    color: #fffff8;
}

QHeaderView::section {
    background-image: url(src/bg.jpg);
    padding: 4px;
    border: 1px solid #fffff8;
}

QTableWidget {
    gridline-color: #fffff8;
}

QTableWidget QTableCornerButton::section {
    background-image: url(src/bg.jpg);
    border: 1px solid #fffff8;
}

【问题讨论】:

  • 我猜你必须添加一列来保存行号,并禁用标题。
  • 在 linux 上对我来说很好用。您可以尝试设置不同的corner widget
  • 哦!谢谢,我用setHorizo​​ntalHeaderLabels()的时候,QTableWidget左上角是白色的,是qt的bug吗? @Schollii
  • @ekhumoro setCornerWidget() 适用于滚动条交叉处的小部件,即右下角(当滚动条可见时!)。行标题和列标题交叉处(即左上角)的小部件似乎无法自定义(除了可以禁用和启用)。
  • @Schollii。谢谢 - 我不知道我是如何错过这个相当明显的一点。但是,样式表确实对我有用——所以这个问题还没有真正得到回答。大概有一些特定于平台的问题在起作用。

标签: python qt pyqt pyqt4 qtstylesheets


【解决方案1】:

对我来说,在 Windows 上使用 PyQt4.13,在 Qt 样式表中的QTableWidget QTableCornerButton 元素上设置背景颜色有效果,但设置背景图像没有。但是,您可以使背景颜色透明 (rgba(0,0,0,0)),然后您会看到小部件的背景图像闪闪发光。应该重新设置边框以使其看起来不错。

代码:

from PyQt4 import QtGui

app = QtGui.QApplication([])

# app.setStyleSheet('QWidget { background-color: #aa8888; } QHeaderView::section { background-color: #88aa88; } QTableWidget QTableCornerButton::section {background-color: #8888aa; }')
# app.setStyleSheet('QWidget { background-image: url(bg.png); } QHeaderView::section { background-image: url(bg.png); } QTableWidget QTableCornerButton::section {background-image: url(bg.png); }')
app.setStyleSheet('QWidget { background-image: url(bg.png); } QHeaderView::section { background-color: rgba(0,0,0,0); } QTableWidget QTableCornerButton::section {background-color: rgba(0,0,0,0); }')

w = QtGui.QTableWidget(2, 2)
w.show()

app.exec_()

结果(取决于您使用的样式表行):

左图:设置小部件、headerview 和 tablecornerbutton 背景颜色的作品

中心图片:设置小部件背景图片,尝试设置headerview和tablecornerbutton背景图片但没有效果

右图:设置小部件背景图片,设置 headerview 和 tablecornerbutton 背景颜色为透明。可能需要重新设置边界。

【讨论】:

    【解决方案2】:

    您必须使用自定义行标题列:

    • 禁用内置行标题列,
    • 添加一列来保存行号,
    • 定义插槽以在添加/删除行时更新行 ID 并选择行、更改其字体等,
    • 最后设置要在 column=0 列标题中使用的小部件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多