2012-01-19 2 views
1

QAbstractTableModel을 확장 한 모델을 사용하여 QTableView가 있습니다. 모델은QTableView에 행을 추가하면 많은 삽입 후에 응용 프로그램이 느려집니다.

QList< QVector<QString> * > 

을 컬렉션으로 사용합니다. 테이블 뷰는 응용 프로그램의 로깅 메시지를 표시하여 컬렉션이 결국 매우 커질 수 있도록합니다. 몇 천 개의 행을 삽입하면 테이블 뷰가 많이 느려지고 결국에는 몇 초 동안 뷰가 고정됩니다. 상쾌하게하기 전에 .. 그것을 사용하는 콜렉션 메신저의 유형이 soo를 많이 늦추게 만드는가? 삽입되는 데이터를 저장하는 더 좋은 방법이 있습니까? QTableView는 많은 양의 데이터를 지원합니까? Qt는 forumn에

편집

게시 코드 : http://www.qtforum.org/article/37326/qttableview-slows-down-when-a-lot-of-data-is-inserted.html

+0

데이터 방법은 어떻게 생겼습니까? 또한 모델에 데이터를 어떻게 삽입합니까? –

답변

0

나는 성공적으로 그렇게 QTableView 그것을 지원할 수 있지만 컬렉션은 원하는 수 잎 ~ 10000 개 행을 표시 QTableView을 사용했다.

QList은 중간에 삽입하는 것이 매우 비쌉니다. 삽입하려는 인덱스 아래에있는 모든 것을 다시 할당해야하기 때문에 포인터를 이동하는 것 뿐이지 만 여전히 이동하고 있습니다.

일반적으로 데이터 저장소의 경우 문자열 대신 벡터 std::vector< data_struct * >을 사용합니다. QVariant은 정수 및 다른 유형을 표현할 수 있으므로 변환을 먼저 할 필요가 없습니다.

제가 제안 할 수있는 가장 좋은 제안은 gprof 또는 비슷한 도구를 사용하여 정확하게 시간을 보내고 특정 부분을 처리하는 시간을 실행하는 것입니다.

+0

구조체의 벡터를 사용하기 위해이 코드를 변경했으며 10,000 행이 지나도 응용 프로그램이 여전히 느려집니다. – MBU

+0

앱을 gprof 했습니까? 당신은 모든'reset()'을하거나 모든 삽입물에 대한 업데이트를하고 있습니까? – Karlson

+0

부적절한 게시물입니다. – MBU

관련 문제