#qt #qt4
#qt #qt4
Вопрос:
По умолчанию выбранная строка должна быть окрашена в серый цвет, если QTableWidget не имеет фокуса, и оранжевый, если он имеет фокус. Вместо этого я хотел бы, чтобы выбранная строка была красной, независимо от того, имеет ли виджет фокус или нет. Я попытался добавить это в таблицу стилей:
QTableWidget{ selection-background-color: red}
Я также пытался
QTableWidget:edit-focus{ selection-background-color: red}
и
QTableWidget:focus{ selection-background-color: red}
но ни один из них, похоже, не окрашивает что-либо в красный цвет, он по-прежнему остается оранжевым, если сфокусирован, и серым, если нет. Какие свойства я должен установить, чтобы выбранная строка всегда имела один и тот же цвет, независимо от того, имеет она фокус или нет?
Спасибо,
Дэвид
Ответ №1:
У вас почти получилось. Технически говоря, вы настраиваете цвет выделения элементов в вашем табличном виджете, поэтому:
QTableWidget::item{ selection-background-color: red}
должно сработать.
В качестве альтернативы:
QTableWidget::item{ background-color: blue }
QTableWidget::item:selected{ background-color: red }
Комментарии:
1. Это делает трюк очень хорошо, но он не работает, когда мы также устанавливаем «background-color» элемента. Я должен прокомментировать цвет фона, чтобы заставить цвета выделения работать.
Ответ №2:
background-color
установит цвет фона элементов в строке и selection-color
установит цвет текста, потому что, когда строка выбрана, если текст присутствует в строке, он может стать нечитаемым из-за цвета, поэтому важно установить правильный цвет текста.
#d9fffb: светло-синий
#000000: черный
self.table.setStyleSheet(
"QTableView::item:selected"
"{"
"background-color : #d9fffb;"
"selection-color : #000000;"
"}"
)