2015-11-23 1 views
0

Есть ли способ создания сортировочных баров в Qt ячеек таблицы:PyQT «классификация баров» в ячейке

Например, если ячейка item.text() == "0%" затем сохранить фон ячейки пустой. Если это 100%, то заполните его полностью с зеленым фоном. Если это 50%, то заполните половину фона ячейки и установите ее на некоторый цвет, например. между красным и зеленым.

Есть ли способ сделать это на платформе qt? Видимо, мне нужны делегаты, но я их раньше не использовал.

решаемые по mrjj из Qt форумов https://forum.qt.io/topic/60971/setpalette-for-qtablewidgetitem-in-qt5

+0

Почему я downvote, было что-то неправильно с моим вопросом? – Lobstw

+0

Я не спустил вниз, но, вероятно, потому, что вы включили минимальный код и не продемонстрировали, как вы пытались решить проблему. –

+0

@LegoStormtroopr О, я вижу, это звучит справедливо. Я думал, что это скорее вопрос «есть ли этот вопрос». Из-за необходимости заполнить% фона ячейки, а не целую вещь. – Lobstw

ответ

1

Поскольку QTableWidgetItem является объектом в своем собственном праве, вы должны быть в состоянии только set the palette like so:

p = QPalette() 
gradient = QLinearGradient(0, 0, 0, 400) 
gradient.setColorAt(0.0, QColor(240, 240, 240)) 
gradient.setColorAt(1.0, QColor(240, 160, 160)) 
p.setBrush(QPalette.Window, QBrush(gradient)) 
item.setPalette(p) # Assuming item is your table cell 
+1

Я не уверен, что это делает именно то, что он спрашивает, так как это делает градиент по всей ячейке, но это похоже на то, что @Lobstw хотел, чтобы бар, который, скажем, 50% клетка. Хотя вы можете сделать это здесь, правильно расположив градиент. – Dval

+0

Извините, я не видел этого ответа раньше. Я пытаюсь перенести код на pyqt5, и все, кроме последней строки, прекрасно, возможно, не может реализовать '.setPalette'. Кроме того, @Dval, вы могли бы показать мне, что вы подразумеваете под разделом градиента? Спасибо вам обоим. – Lobstw

+0

Неплотно, gradient.setColorAt (0,0, QColor (240, 240, 240)) gradient.setColorAt (х, QColor (240, 240, 240)) gradient.setColorAt (х + 0,01, QColor (240, 0, 0)) gradient.setColorAt (1.0, QColor (240, 0, 0)) заставит градиент быть белым для первого x процента. Что касается .setPalette, я не знаю. Код Lego работает в PyQt4, и я не знаком с изменениями в 5. – Dval

Смежные вопросы