I\'m using a QTableView with a subclass of QItemDelegate to control the look and feel of the tableview\'s cells.
Each cell displays the name and status of a of an extern
since your QTableView inherits QWidget, you can call the following on it:
setUpdatesEnabled(false);
changeAllYourData();
setUpdatesEnabled(true);
When setUpdatesEnabled is false, any paint() or update() call on it has no effect. So, you could stop it from updating, change all your data and then reenable it, possibly by manually calling paint() or update() manually on it, I'm not sure about this part.
Here is the doc for the setUpdatesEnabled method.
QWidget updatesEnabled
Hope this helps.
EDIT after comment from user:
You could implement your own setUpdatesEnabled(bool) for your QItemDelegate subclass (since it does not inherit QWidget and does not have one) by testing a flag before executing your original paint() or update(). After that, you could specify for every cell (or row or column) of your QTableView if they must be updated or repainted.
By doing this, you could stop your other cells (delegates) from repainting, unless you change the setUpdatesEnabled flag you created manually, but keep the updates on your cells containing a graph.
I must say I never tested this or anything like this, so I hope it works the way I think it does.
Best of luck
EDIT after edit from user:
Following my previous comment, instead of setting a flag for every cell (I thought your graph was in a separate cell), you could set a flag for every delegate to paint only your graph or the whole image.
Hope this helps,
EDIT:
I stumbled upon a new feature in Qt 4.7 (I do not know if it's possible for you to use it, but it could solve some of your problems.) The feature is QStaticText. It is a class that allows you to cache text (font and effects) and paint them faster. See the link here.
Hope it could solve your problem.