在pyqt5的QTableWidget中突出显示cellWidget

时间:2019-06-25 19:33:47

标签: python pyqt5

我有一个QTableWidget设置,它基本上显示了我已连接的数据库的内容。每列都是基本的文本信息,但最后一列是根据条目的特权选中的复选框,用户无法切换它。我还设置了表格,以便在选择单个列时突出显示整个行。但是由于某种原因,带有复选框的列不会突出显示。我搞砸了复选框的样式表(带有selection-background-color),但是它仍然无能为力。我也尝试过弄乱isSelected()并更改它返回的所有项目的背景颜色,但还是没有运气。

关于如何设置复选框选择颜色的任何想法吗?

from PyQt5 import QtCore, QtGui, QtWidgets
from buttons import *
import sqlite3
from _sqlite3 import connect
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QApplication, QDialog, QDialogButtonBox,
        QHBoxLayout, QMessageBox, QPushButton, QHeaderView, QTableView, QAbstractItemView)

def loadData(self, QTableWidget, insert):
        self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)

        connection = sqlite3.connect('employee.db')
        c = connection.cursor()
        data = fetch_all()
        self.tableWidget.setRowCount(0)

        self.tableWidget.horizontalHeader().resizeSection(1, 50); 
        i = 0
        self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.tableWidget.verticalHeader().setVisible(False)
        self.tableWidget.horizontalHeader().setVisible(False)
        self.tableWidget.setShowGrid(False)

      #  self.tableWidget.setStyleSheet("selection-background-color: red")

  #      self.tableWidget.setStyleSheet("background-color: black")



        header = self.tableWidget.horizontalHeader()

        for row in data:
            self.tableWidget.insertRow(i)
            i += 1
            j = 0
            for x in row:
                if (j == 4):
                    break
                if(i == 1 and insert == True):
                    self.tableWidget.insertColumn(j)
                if (j == 0):
                    self.tableWidget.setItem(i-1, j, QtWidgets.QTableWidgetItem("  " + str(x)))
                elif (j == 3 and str(x) == "admin"):
                    self.tableWidget.checkBox = 
                   QtWidgets.QCheckBox(self.tableWidget)
                    self.tableWidget.checkBox.setChecked(True)
                    self.tableWidget.checkBox.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents)
                    self.tableWidget.checkBox.setFocusPolicy(QtCore.Qt.NoFocus)


                    self.tableWidget.setCellWidget(i-1, j, self.tableWidget.checkBox)

                    self.tableWidget.checkBox.setStyleSheet
                    ("background-color: rgb(0, 0, 0); selection-background-color: gray; padding-left: 10px")


                else:
                    if (str(x) != "user"):
                        self.tableWidget.setItem(i-1, j, QtWidgets.QTableWidgetItem(str(x)))


                j += 1

        self.tableWidget.horizontalHeader().resizeSection(0, 188)
        self.tableWidget.horizontalHeader().resizeSection(1, 155)
        self.tableWidget.horizontalHeader().resizeSection(2, 255)

        self.tableWidget.horizontalHeader().resizeSection(3, 30)

        self.tableWidget.setStyleSheet("background-color: rgb(0, 0, 0); selection-background-color: #353535;")


        header = self.tableWidget.horizontalHeader()

        #header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)

        connection.close()

0 个答案:

没有答案