2013-01-09 83 views
0

我有一個QTableView連接到QAbstractTableModel
該模型與QtConcurrent::map用來使線程的應用程序(複製文件)Qt Qt併發進度條更新

我子類QStyledItemDelegate以顯示tableviews細胞中的一個的QStyleOptionProgressBar,和想法是通過下列方式更新模型中的進度條。它可以工作,但一次性從0到100%不平穩。

QAbstractTableModel::setData()在我的「複製循環」中被調用,但似乎QAbstractTableModel::dataChanged() 只在循環結束時發出。不管我做什麼。

這可能是一個錯誤的方法,但我不知道如何從一個線程訪問表視圖中的給定進度條。

回答

2

您需要自己在您的表模型類中實現setData(),其子類爲QAbstractTableModel。基類實現什麼也不做,並返回false。如果數據設置成功,您將負責發送dataChanged()信號。

+0

我已經完成了。這個問題似乎是因爲在一個循環內調用了setData()。當循環結束時,模型被更新。我只需要它在循環內發生。 – user635818

+0

你應該看看這裏(如果它仍然相關),http://stackoverflow.com/questions/14230265/what-is-the-proper-way-to-set-qprogressbar-to-update-from-the-logic-層 – GoldenAxe