【问题标题】:Qt - make selection background have similar background to itemQt - 使选择背景具有与项目相似的背景
【发布时间】:2015-11-26 21:10:55
【问题描述】:

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

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

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)")

但都不保留原来的颜色

【问题讨论】:

    标签: css pyqt


    【解决方案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)
    

    【讨论】:

    • 感谢您的回答。仔细看,我想你可能误解了我的问题。您发布的代码看起来像是将单元格背景设置为单元格值(“红色”),而我所追求的是将选择背景(您在 css 中保持不变)设置为当前单元格背景的混合。我承认我没有完全理解你的代码(我正在使用 qt5)所以请随时纠正我!
    猜你喜欢
    • 2010-12-12
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多