2011-11-20 3 views
1

사용자 지정 모델이있는 QTableView가 있는데 제대로 작동합니다. 그러나 프로그램을 시작할 때 기본적으로 너무 많은 공간을 차지하기 때문에 행과 열의 크기를 맞추기를 원합니다. 나는 테이블에 65k 개의 행 (3 개의 열만 있음)이 있으며, 항상 동일하다는 것을 알아야한다. 다음 코드는 정상적으로 작동하지만 매우 느립니다.QTableView의 행과 열에 맞게 크기가 조정되는 속도가 매우 느립니다.

memorListView는 QTableView입니다. 이 라인 이전에, 나는 setModel 내 사용자 정의 모델

memoryListView->resizeRowsToContents(); 
memoryListView->resizeColumnsToContents(); 

내가 언급처럼,이 내가 필요하지만, 그것을 실행하는 데 약 8 초 정도 소요 정확히 않습니다. 모든 데이터가 모델에서 빠져 나올 필요가 있다고 생각합니다.보기가 그렇지 않으면 요청하는 것이 게으르다.

행과 열의 크기를 수동으로 설정할 수는 있지만 현재의 해결 방법이지만 크로스 플랫폼 응용 프로그램이므로 다른 위젯, 텍스트 크기, DPI 등에 대해 걱정할 필요가 없습니다. 문제. 내가 행을 autosize 수 있고 그 행의 크기, 나머지는 정확하지만 매우 해커 것 같습니다 설정합니다.

나는이 작업을 순진하게하고 있기를 바라고 있으며, 전환 할 수있는 옵션이 있습니다. 모든 행과 열이 같은 크기가 될 것입니다. 어떻게 든 힌트를 사용하도록 말할 수 있습니까?

미리 감사드립니다.

답변

2

QFontMetrics을 사용하여 텍스트 너비를 간단히 측정 한 다음 열 너비를 그 너비로 설정할 수 있습니다. 그런 식으로 작동해야합니다 :

QFontMetrics fontMetrics(yourWidget->font()); 
int columnWidth = fontMetrics.width("some text"); 
+0

흠 나는 그 장면을 줄 것입니다. 그것은 유망 해 보입니다. – Robert

+0

그 덕분에, 고마워. QFontMetrics에 대해 기억해야합니다. – Robert

관련 문제