Использование Qt 4.6.3 для Linux/X11.Отображение QStandardItem с его цветом переднего плана в QTreeView, даже если оно выбрано.
У меня есть виджет QTreeView, который использует QStandardItemModel в качестве своей модели с 4 столбцами и сотнями строк. Большинство элементов в списке должны отображаться со стандартным цветом, но некоторые из них должны быть другого цвета. Я могу легко изменить цвета этих элементов с помощью QStandardItem :: setForeground().
Тем не менее, это влияет только на цвет предмета, когда он равен не выбран. Когда я выбираю цветной элемент, его цвет фона меняется на синий (это нормально), а цвет текста меняется на белый (что не совсем нормально). Я попытался использовать таблицу стилей, чтобы повлиять на цвет переднего плана для выбранных элементов (с выбором селектора QTreeView :: item: selected), но он влияет на все элементов.
Мне нужны элементы, для которых я звонил item->setForeground(Qt::red)
, чтобы оставаться красным даже в том случае, если они выбраны, и другие элементы, чтобы использовать набор цветов по умолчанию (что они уже делают). Как это можно сделать?
Если вы достигнете этого, вы, вероятно, сделаете выбранные элементы нечитаемыми. Кроме того, хорошая практика проектирования заключается в том, чтобы использовать больше, чем просто цвет, чтобы указать состояние. Может быть, вы могли бы использовать значок вместо этого? –
@Steve S: Я знаю, что вы имеете в виду, но я не буду отображать выбранные элементы нечитабельно, если я также контролирую цвет фона выбранных элементов (учитывая слепоту цвета), что и происходит. И, к сожалению, в этой конкретной ситуации я не могу использовать значок, он должен быть цветным. – Fred