The rendering part of the QTableView is optimized for that kind of data. After a quick look at your code, it seems you are generating lots of widgets to show your data, here you would only have one.
found out!
dropEvent() method of DragWidget() class needed to be modfied to
get X and Y of dropped icon and pass those value to self.minimumSize()
if newIcon.y()+32 > self.minimumHeight():
self.setMinimumHeight(newIcon.y()+32)
if newIcon.x()+32 > self.minimumWidth():
self.setMinimumWidth(newIcon.x()+32)
I don't know of an example to do that but basically your model should "lie" to your view so you need get the amount of data you have from your server and tell your view that you have e.g. 100'000 items in rowCount. Then in data you would probably have to do something like a detection of when you get "serial" calls to update the view and once it stops, check what indexes should be shown and only then fetch the data from your server. But that would also mean that your underlying that structure should be able to handle "holes" like for example if your user jumps from the top to the bottom of your view.
So, finally I used a QGraphicsView and a QGraphicsScene in which I add my QWidget and now I can use the scroll (with the dragMode). I didn't implemented the zoom yet, but it I'm working on.
@grheard It didn't work because the requirement is to clip beyond the ListView's boundary and not the delegate's one. And so setting clip for ListView did the trick.