Domanda

I have a QTableWidget. In its cells I need to display 3-state QSliders, that must change their color, depending form their state. -1 = red, 0 - normal, 1 - green. I tried to set QPalette to QSlider - whitout success. I tried to place QSlider into QWidget with Layout and apply palette to QWidget - whitout success. How to do that? I need any color sign (border or full background, e.t.c) How to do that?

È stato utile?

Soluzione

You can use QItemDelegate, then you'll could to rule your QSlider into QTableWidget.

Detail.

At first, you should derive from QItemDelegate. A good docs presents by doc.qt.digia example using qitemdelegate

You should substitute QSpinBox to QSlider. And after reading this document, you can do needed with setting color your QSlider.

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

To editor was opened always, you should use openPersistentEditor(). For example:

QTableWidgetItem *item = new QTableWidgetItem;
table->insertRow(row);
table->setItem(row, index_your_delegate, item);
table->openPersistentEditor(item);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top