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