나는 QTableWidget을 가지고 있습니다. 그 셀에 3 상태 QSliders를 표시해야하는데, 그 상태는 상태에 따라 색이 바뀌어야합니다. -1 = 빨간색, 0 - 보통, 1 - 녹색. 나는 QPalette를 QSlider - whitout success로 설정하려고 시도했다. QSlider를 QWidget에 배치하고 QWidget에 팔레트를 적용하려고했는데 성공했습니다. 어떻게 그럴 수 있습니까? 어떤 색깔의 사인이 필요합니까 (경계선이나 배경, e.t.c) 어떻게해야합니까?QTableWidget에서 QWidget의 색상을 변경하는 방법
답변
QItemDelegate
을 사용하면 QSlider
을 QTableWidget
으로 설정할 수 있습니다.
세부 사항.
처음에는 QItemDelegate
에서 파생되어야합니다. 훌륭한 문서는 doc.qt.digia
example 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);
당신은 이것에 대해 더 많이 말해 줄 수 있습니까? 예제를 아십니까? –
질문 있으십니까? – Ruu
이 스핀 상자는 셀이 포커스를 얻었을 때만 나타 납니까? 선택하지 않으면 초점을 맞추지 않고 색상을 유지해야합니다. –
시도한 방법 (코드 조각)을 표시 하시겠습니까? 그래서, 우리는 당신이 한 일을 볼 수 있습니다. –
라벨 용입니다. 배경색은 흰색입니다. 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); –