2014-04-14 17 views
2

void setSelectionBehavior (QAbstractItemView::SelectionBehavior behavior)QTableView의 전체 열 선택을 비활성화하는 방법은 무엇입니까?

이 함수는 항목 선택, 행 선택 및 셀 선택의 세 가지 값 중 하나를 허용합니다.

질문 : 셀을 클릭하면 나는 경우 필요

는,이 행 인덱스를 클릭하면, 행이 선택되어 있지만 열은 전체 열 헤더를 클릭하면 선택하지 않은, 선택됩니다. 이 기능을 사용하여이 작업을 수행 할 수 없다는 것을 이해합니다.

SelectionBehavior::selectItems이 설정되었을 때와 똑같이 동작하려면 tableview가 필요합니다.

그러나 사용자가 헤더를 클릭하면 열을 선택하면 안됩니다.

QHeaderView에서 열 선택을 사용 중지하려고 생각했지만 어떻게 찾을 수 없습니까? 내 응용 프로그램에서

+1

머리글보기의 특정 섹션에 클릭 이벤트를 필터링하려고 했습니까? – vahancho

답변

2

:

// get header from QTableView tableView (replace with your widget name) 
    QHeaderView *header = new QHeaderView(Qt::Horizontal, tableView); 
#if QT_VERSION < 0x50000 
// Qt 4.8.1 
    header->setResizeMode(QHeaderView::ResizeToContents); 
#else 
// Qt 5.2.0 
    header->setSectionResizeMode(QHeaderView::ResizeToContents); 
#endif 
    header->setHighlightSections(false); // this is what you want 

setHighlightSections (BOOL) 슬롯 Qt는 4 Qt는 5

유효

편집 : 부주의에 대한 변명! SingleSelection과 함께 SelectRows 또는 SelectItem을 사용하는 경우에만 작동합니다. 당신은 소스 qheaderview.cppqtableview.cpp, 슬롯 voidQHeaderView::mousePressEvent(QMouseEvent *e); 및 SelectItems를 들어 voidQTableViewPrivate::selectColumn(int column, bool anchor);

이 슬롯을 사용할 수있는 증거를 찾을 수 있습니다

header->setClickable(false); 
+0

이것은 도움이되지 않습니다. 나는 컬럼을 선택하는 것이 아니라 섹션을 강조하는 것이라고 생각합니다. 다시 확인해 주시겠습니까? – Ashot

+0

맞아! 내 경우는 SelectRows입니다. 헤더에서 아무런 클릭도 사용하지 않으면 setClickable (false)을 사용하여 열의 선택을 비활성화 할 수 있습니다. 나는 내 대답을 편집했다. – progopis