2012-10-22 28 views
0

我有一個QTableWidget。在它的細胞中,我需要顯示三態QSliders,它必須根據它們的狀態來改變它們的顏色。 -1 =紅色,0 - 正常,1 - 綠色。我試圖將QPalette設置爲QSlider - 取得成功。我嘗試將QSlider放入帶Layout的QWidget中,並將調色板應用於QWidget - 取得成功。 如何做到這一點?我需要任何顏色符號(邊框或全背景,e.t.c)如何做到這一點?如何在QTableWidget中更改QWidget的顏色

+0

你想展示(一段代碼)你已經試過了嗎?所以,我們可以看到你做了什麼。 –

+0

這是標籤。背景顏色是白色的。 QLabel * label = new QLabel(this); QPalette palette = label-> palette(); palette.setColor(label-> backgroundRole(),Qt :: green); label-> setText(「aaa」); label-> setPalette(palette); this-> ui-> tableWidgetSwitches-> setCellWidget(0,1,label); –

回答

1

你可以使用QItemDelegate,那麼你就可以將你的QSlider統治成QTableWidget

詳情。

起初,你應該從QItemDelegate派生。好文檔由doc.qt.digiaexample 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); 
+0

你能告訴我更多嗎?你知道這些例子嗎? –

+0

你有什麼問題嗎? – Ruu

+0

這個spinBox只在細胞聚焦時纔會出現?我需要他們在沒有選擇的情況下保持他們的顏色,而不用焦點。 –