如何在QTableWidget中更改QWidget的颜色

时间:2012-10-22 09:22:11

标签: qt colors paint qwidget qslider

我有一个QTableWidget。在它的单元格中,我需要显示三态QSliders,它们必须根据它们的状态改变它们的颜色。 -1 =红色,0 - 正常,1 - 绿色。我试图将QPalette设置为QSlider - whitout成功。我尝试将QSlider放入带有布局的QWidget中,并将调色板应用到QWidget - whitout成功。 怎么做?我需要任何颜色标志(边框或完整背景,e.t.c)如何做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用QItemDelegate,然后您可以将QSlider统治为QTableWidget

详细。

首先,您应该从QItemDelegate派生。 doc.qt.digia example using qitemdelegate

提供了一个好的文档

您应该将QSpinBox替换为QSlider。阅读本文档后,您可以根据自己的QSlider设置颜色。

QTableWidget *table = new QTableWidget(this);
table->setItemDelegateForColumn(index_column, delegate);
// or table->setItemDelegateForRow(index_row, delegate);
// or table->setItemDelegate(delegate);

始终打开editor,您应该使用openPersistentEditor()。例如:

QTableWidgetItem *item = new QTableWidgetItem;
table->insertRow(row);
table->setItem(row, index_your_delegate, item);
table->openPersistentEditor(item);