How to set QTableWidget upper left corner using a background image?

[亡魂溺海] 提交于 2019-12-02 02:05:58

问题


How to set QTableWidget upper left corner using a background image? Now it is white. (Pointed in the image below)

This is my style sheet code:

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;
}

回答1:


You will have to use a custom row-headers column:

  • disable the builtin row headers column,
  • add a column to hold row numbers,
  • define slots to update row ID when rows are added/removed and to select row, change its font etc,
  • and finally set the widget to be used in column=0 column header.



回答2:


For me, using PyQt4.13 on Windows, setting a background-color on the QTableWidget QTableCornerButton element in the Qt stylesheet has an effect but setting background-image has not. However, you can make the background-color transparent (rgba(0,0,0,0)) and then you see the background image of the widget shining through. The border should be set again to make it look nice.

Code:

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_()

Results in (depending on which stylesheet line you use):

Left image: set widget, headerview and tablecornerbutton background color works

Center image: set widget background image, try to set headerview and tablecornerbutton background image but without effect

Right image: set widget background image, set headerview and tablecornerbutton background color to transparent. Borders have to be set again probably.



来源:https://stackoverflow.com/questions/41440878/how-to-set-qtablewidget-upper-left-corner-using-a-background-image

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!