1

カスタム モデルの QTableView があり、正常に動作します。ただし、プログラムを開始するときに、行と列のサイズを適切に調整したいと考えています。これは、デフォルトではスペースが大きすぎるためです。私のテーブルには 65,000 行 (3 列のみ) があり、それらは常に同じであることに注意してください。次のコードは問題なく動作しますが、非常に遅いです。

memorListView は QTableView です。この行の前に、setModel私はカスタム モデルに

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

前述したように、これはまさに必要なことを行いますが、実行には約 8 秒かかります。ビューがそれを要求するのを怠って喜んでいる場合、すべてのデータをモデルから引き出す必要があるためだと思います。

行と列のサイズを手動で設定することもできましたが、これが現在の回避策ですが、これはクロスプラットフォーム アプリであり、さまざまなウィジェット、テキスト サイズ、DPI などによって問題が発生することを心配する必要はありません。1 つの行を自動サイズ変更してから、残りをその行のサイズに設定することができます。これは正しいですが、非常にハックに思えます。

私はこれを素朴にやっているだけだと思っています。トグルできるいくつかのオプションがあり、それを高速化できます。すべての行と列が同じサイズになることはわかっています。どういうわけかそのヒントを使用するように指示できますか?

前もって感謝します。

4

1 に答える 1

2

を使用してテキストの幅を測定しQFontMetrics、列幅をそれに設定するだけです。そのようなものはうまくいくはずです:

QFontMetrics fontMetrics(yourWidget->font());
int columnWidth = fontMetrics.width("some text");
于 2011-11-20T07:10:24.357 に答える