QTableView, цвет текста в ячейке при его редактировании

Имеется проект на PyQt5 с использованием базы данных. Для отображения таблицы использую QTableView.

В StyleSheet:

QTabelView {
    color: white;
    …
}

Но при редактировании конкретной ячейки (содержит текстовое значение), когда я непосредственно ввожу в неё новый текст, цвет текста становится чёрным, его не видно (использую темный фон).

Изображение проблемы:

[Изображение проблемы

Как исправить? Все перерыл уже.


Ответы (1 шт):

Автор решения: S. Nick

Пожалуйста, всегда предоставляйте минимально-воспроизводимый пример, который демонстрирует проблему.

QTableView - пишется так, а не так - QTabelView.

Как вариант. Когда вы выполняете редактирование ячейки, где-то под капотом вызывается виджет QLineEditили QSpinBox и все что я вам предлагаю попробовать - это добавить в таблицу стилей :

QLineEdit {
   background: #4CACBC;
   color: #fff;
}
QLineEdit:focus { 
    background: #3C2C3E;
    color: #FF06B7;
}

QDoubleSpinBox { 
    background: #3C2C3E;
    color: #FF06B7;
}

from PyQt5 import QtCore, QtGui, QtWidgets


class Delegate(QtWidgets.QStyledItemDelegate):
    def createEditor(self, parent, option, index):
        editor = QtWidgets.QDoubleSpinBox(parent, decimals=2)  
        editor.setFrame(False)
        editor.setMinimum(-1.7976931348623157e308)
        editor.setMaximum(1.7976931348623157e308)
        editor.setSizePolicy(
            QtWidgets.QSizePolicy.Ignored, editor.sizePolicy().verticalPolicy()
        )
        return editor


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        
        self.centralwidget = QtWidgets.QWidget()           
        self.centralwidget.setObjectName("centralwidget") 
        self.setCentralWidget(self.centralwidget)  
        
        self.tableView = QtWidgets.QTableView()
        self.tableView.setObjectName("tableView") 
        self.model = QtGui.QStandardItemModel(5, 5, self)
        self.tableView.setModel(self.model)
        
        self.layout = QtWidgets.QHBoxLayout(self.centralwidget)        
        self.layout.addWidget(self.tableView)

        for row in range(self.model.rowCount()):
            for column in range(self.model.columnCount()):
                item = QtGui.QStandardItem("{row}{column}".format(row=row, column=column))
                self.model.setItem(row, column, item)

        delegate = Delegate(self.tableView)
        self.tableView.setItemDelegateForColumn(0, delegate)


StyleSheet = '''
#centralwidget {
    background-color: #A0D995;
}

QTableView {
    border-radius: 0px;
    color: white;
    font-size: 21px;
    background-color: #377D71;
}
QTableView::item:selected:active {
    background: #53BF9D;
    color: #ff0;
}

QTableCornerButton::section {
    border: none;
    background-color: #05595B;
}

QHeaderView, QHeaderView::section {
    color: #ff0;
    font-size: 25px;
    background-color: #05595B;
}
QHeaderView::section:horizontal {
    background-color: #05595B;
}

QLineEdit {
   background: #4CACBC;
   color: #fff;
}
QLineEdit:focus { 
    background: #3C2C3E;
    color: #FF06B7;
}

QDoubleSpinBox { 
    background: #3C2C3E;
    color: #FF06B7;
}
'''


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    app.setStyleSheet(StyleSheet) 
    w = MainWindow()
    w.resize(550, 300)
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка