2014-12-18 2 views
2

QTableView의 기본 행 크기를 어떻게 변경하여 작습니까? resizeRowsToContents()이라고 부를 수는 있지만 이후의 삽입은 여전히 ​​기본 크기 인 끝에 새로운 행을 추가합니다.QTableView에서 기본 행 크기 변경

나는 스타일 시트와 관련이 있다고 생각하지만 시각적 변화에 어떤 영향을 미치는지 충분히 잘 모르겠습니다.

Python에서 PySide를 사용하고 있습니다. 그러나 이것은 일반적인 Qt 질문이라고 생각합니다.


예를 들어보기 :

기본 테이블 모양 테이블 resizeRowsToContents() 후 모습

enter image description here

: 지금

enter image description here

경우 I 마지막에 새로운 빈 행을 추가

enter image description here

터무니은, 모든 여분의 공간, 기본 행 높이를 사용합니다.

+0

'tableView.verticalHeader() .setResizeMode (QHeaderView.ResizeToContents)'는 잘 작동하는 것처럼 보입니다. 그러나 실시간 업데이트를 많이 할 때 동적이며 응용 프로그램 속도가 느려집니다. 난 그냥 표준 행 크기를 얻고 싶습니다. :-( –

+2

"표준"행 높이는 내용에 크기를 조정하지 않을 때 얻을 수있는 값으로 행에 대한 크기 힌트를 기반으로합니다 (다른 항목 중에서 항목 위임에 대한 크기 힌트에서 파생 됨). 그 특정 높이가 마음에 들지 않는다면, 좀 더 수용할만한 것으로 변경하십시오 (예를 들어'table.fontMetrics(). height() + 6'). – ekhumoro

+0

어쨌든 두 번째 이미지와 세 번째 이미지 사이에는 큰 차이가 없습니다. – Trilarion

답변

6

Qt::SizeHintRole 세포의 너비와 높이를 결정합니다. 그래서 그냥 할 수 있습니다

someModel.setData(someIndex,QSize(width, height), Qt::SizeHintRole); 

또는

그냥이 :

someView.verticalHeader().setDefaultSectionSize(10); 

내가 setDefaultSectionSize 당신이 찾고있는 정확하게라고 생각합니다. AFAIK 다른 간단한 방법이 없습니다.

From doc:

defaultSectionSize :이 속성은 크기를 조정하기 전에 헤더 부분의 기본 크기를 보유하고

을 int로. 이 속성은 Interactive 또는 크기 조정 모드로 고정 된 섹션에만 영향을줍니다.

당신이 필요로 얼마나 많은 픽셀을 모르는 경우, 다음과 같은 일을 rowHeight()

resizeRowsToContents()을 적용 그래서해야 후이 높이를 얻으려고 :

resizeRowsToContents(); 
someView.verticalHeader().setDefaultSectionSize(someView.rowHeight(0)); 
+0

흠 ...하지만 픽셀 수를 알지 못합니다. 난 그냥 QTableView 추가 공간없이 데이터를 표시 할 싶습니다. –

+0

@ JasonS 스크린 샷을 찍은 후 행 높이가 동일하므로 내 대답을 편집했으며 데이터가 매우 복잡하지 않으면 작동해야합니다. – Chernobyl