2012-10-22 5 views
0

나는 QTableWidget을 가지고 있습니다. 그 셀에 3 상태 QSliders를 표시해야하는데, 그 상태는 상태에 따라 색이 바뀌어야합니다. -1 = 빨간색, 0 - 보통, 1 - 녹색. 나는 QPalette를 QSlider - whitout success로 설정하려고 시도했다. QSlider를 QWidget에 배치하고 QWidget에 팔레트를 적용하려고했는데 성공했습니다. 어떻게 그럴 수 있습니까? 어떤 색깔의 사인이 필요합니까 (경계선이나 배경, e.t.c) 어떻게해야합니까?QTableWidget에서 QWidget의 색상을 변경하는 방법

+0

시도한 방법 (코드 조각)을 표시 하시겠습니까? 그래서, 우리는 당신이 한 일을 볼 수 있습니다. –

+0

라벨 용입니다. 배경색은 흰색입니다. QLabel * label = new QLabel (this); Q 팔레트 팔레트 = 레이블 -> 팔레트(); palette.setColor (label-> backgroundRole(), Qt :: green); label-> setText ("aaa"); label-> setPalette (palette); this-> ui-> tableWidgetSwitches-> setCellWidget (0, 1, label); –

답변

1

QItemDelegate을 사용하면 QSliderQTableWidget으로 설정할 수 있습니다.

세부 사항.

처음에는 QItemDelegate에서 파생되어야합니다. 훌륭한 문서는 doc.qt.digiaexample using qitemdelegate

으로 대체해야합니다. QSlider으로 대체해야합니다. 이 문서를 읽은 후에는 색을 설정하고 필요한 경우 QSlider을 수행 할 수 있습니다. editor으로

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

당신은 openPersistentEditor()를 사용해야합니다, 항상 열렸다. 예 :

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

당신은 이것에 대해 더 많이 말해 줄 수 있습니까? 예제를 아십니까? –

+0

질문 있으십니까? – Ruu

+0

이 스핀 상자는 셀이 포커스를 얻었을 때만 나타 납니까? 선택하지 않으면 초점을 맞추지 않고 색상을 유지해야합니다. –

관련 문제