2011-11-20 30 views
1

我有一個QTableView與自定義模型,它工作正常。但是,當我啓動程序時,我希望行和列的大小適合,因爲默認情況下佔用的空間太多。我應該注意我的桌子有65k行(只有3列),而且它們總是一樣的。以下代碼工作正常,但速度很慢。調整大小以適應QTableView中的行和列是非常緩慢的

memorListView是一個QTableView。在此之前行,我setModel我的自定義模型

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

就像我提到的,這不正是我需要的,但它需要大約8秒運行。我認爲這是因爲所有的數據都需要從模型中提取出來,否則當視圖不願意懶惰請求時。

我可以手動設置行和列的大小,這是我目前的解決方法,但這是一個跨平臺的應用程序,我不想擔心不同的小部件,文本大小,DPI等導致問題。我可以自動大小一個行,然後將其餘設置爲該行的大小,這將是正確的,但似乎很hacky。

我希望我只是天真地做這個,而且有一些選項可以切換,這會讓它更快。我知道所有的行和列將是相同的大小;我可以告訴它以某種方式使用該提示嗎?

在此先感謝。

回答

2

您可以簡單地使用QFontMetrics來測量文本的寬度,然後將列寬設置爲它。類似的東西應該可以工作:

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

嗯我會給那一槍。看起來很有希望。 – Robert

+0

工作,謝謝。需要記住關於QFontMetrics – Robert

相關問題