2014-07-26 25 views
2

비활성화 된 setSelectionMode (QTableWidget :: NoSelection)가있는 QTableWidget을 가지고 있으며 필자가 채우는 QTableWidgetItem에는 Qt :: ItemIsEditable 플래그가 없습니다.QTableWidget에서 선택 강조 표시를 비활성화하는 방법

Highlighted cell

가 어떻게이 "커서"해제 할 수 있습니다

그럼에도 불구하고, 클릭 된 셀은 커서 어떤 종류의 (내 경우에는 하단에 검은 선)을 얻는다?

+0

'Qt :: ItemIsSelectable' 플래그를 지우십시오. –

+0

Qt :: ItemIsSelectable이 제거 된 것과 같은 결과를 얻었습니다 ... –

답변

6

이 정보가 도움이 되나요?

QPalette palette = tableWidget->palette(); 
palette.setBrush(QPalette::Highlight,QBrush(Qt::white)); 
palette.setBrush(QPalette::HighlightedText,QBrush(Qt::black)); 
tableWidget->setPalette(palette); 

조금 정교한하려면 다음 항목의 모양 당신이 TableWidget::palette() 방법으로 검색 할 수있는 뷰의 팔레트의 적용을받습니다. const으로 반환되므로 복사본을 얻은 다음 변경하고 setPalette을 사용하여 적용합니다. 여기에서는 단순히 셀 색상을 흰색으로 설정하고 텍스트 색상을 검정으로 설정 했으므로 이상적으로는 기본 셀 색상 (팔레트에서도 사용 가능)으로 설정하는 것이 이상적입니다. 마지막으로, 필자의 경우이 항목은 여전히 ​​여기에서 다루려고하지 않은 기본 경계와 다른 경계를 유지했다는 점에 유의하십시오.

다양한 색상 정의에 대한 자세한 내용을 볼 수 있습니다. 여기 (Qt는 4.8의 경우) http://qt-project.org/doc/qt-4.8/qpalette.html#ColorRole-enum

편집 : 좀 더 당신이이 같은 전체 위젯의 초점 정책을 설정하여 상호 작용 (안 선택)에 따라 위젯의 주위에 모든 경계를 제거해야한다는 것 선별 :

tableWidget->setFocusPolicy(Qt::NoFocus); 

이것이 트릭을하지 않는다면, 나는 아이디어가 급속도로 빠져 나간다.

+0

나는 이걸로 여전히 검은 선을 얻었습니다. –

+0

@TobiasLeupold @TobiasLeupold @ 한 번 더 찾았습니다. 내가 말했듯이, 이것이 도움이되지 않는다면, 나는 생각에서 벗어났다. – Erik

+2

또 다른 추가 사항 :이 스레드가 같은 결론에 도달 한 것 같습니다 : http://stackoverflow.com/questions/2055705/hide-the-border-of-theselected-cell-in-qtablewidget-in-pyqt 'Qt :: NoFocus'를 사용하면 키보드로 탐색 할 수있는 능력이 없어지는데주의해야합니다. – Erik

1
#include <QTableWidget> 



tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); 
tableWidget->setFocusPolicy(Qt::NoFocus); 
tableWidget->setSelectionMode(QAbstractItemView::NoSelection); 

이 문은 세포에서 테이블의 선택을 해제합니다 ..

0

아래의 솔루션은 나를 위해 일한 :

tableWidget->setFocusPolicy(Qt::NoFocus); 

그러나 문제는 당신이 키보드 작동하지 않을 수 있다는 것입니다 QTableWidget에서 위아래로 이동합니다.

그래서 해결책이 좋지 않다고 생각합니다.