Qt - 使选择背景与项目具有相似的背景

时间:2015-11-26 21:10:56

标签: css pyqt

如何选择某个项目作为某种当前单元格背景的混合时的背景?

默认的项目选择背景是蓝色,如果我的单元格是红色,那么我希望它是红色,不透明度稍低:

Example image of how it is

Example image of how I'd like it to be

我尝试将颜色设置为透明:

setStyleSheet("selection-background-color: transparent")

还有不透明度为1%的rgba功能:

setStyleSheet("selection-background-color: rgba(255, 255, 255, 1)")

但两者都没有保留原始颜色

1 个答案:

答案 0 :(得分:1)

此示例将为您提供有关如何使用tablewidgets和item

进行管理的一些信息
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

data = {'col1':['red','blue','green']}

class MyTable(QTableWidget):
    def __init__(self, data, *args):
        QTableWidget.__init__(self, *args)
        self.data = data
        self.setmydata()
        self.resizeColumnsToContents()
        self.resizeRowsToContents()
        self.setStyleSheet("""QTableView::item:focus
            {
                selection-background-color: rgba(255, 0, 0, 128);
            }""")


    def setmydata(self):
        horHeaders = []
        for n, key in enumerate(sorted(self.data.keys())):
            horHeaders.append(key)
            for m, item in enumerate(self.data[key]):
                newitem = QTableWidgetItem(item)
                self.setItem(m, n, newitem)
                colorVal = "Qt.%s" % item
                self.item(m, n).setBackground(eval(colorVal))
        self.setHorizontalHeaderLabels(horHeaders)

def main(args):
    app = QApplication(args)
    table = MyTable(data, 3, 1)
    table.show()
    sys.exit(app.exec_())

if __name__=="__main__":
    main(sys.argv)