Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Further "Plumbing" for Model->View->Delegate...



  • I have a QListView, clearly showing, My model is full of data. My model's ::rowCount() is called and returns a > 0 result. I connected my model to the QListView with "setModel". I connected the delegate to the QListView with "setItemDelegate".

    Yet the "Paint" method on my delegate isn't called, not once. Not even after resizing the live QListView. Why?

    Do I need further "hooking up" of events here? perhaps connecting some slots to signals? I thought the "setModel" and "setDelegate" will take care of that for me. Was I wrong?



  • no, normally it works
    please show us some example code which does not work.
    I'm sure, there is some bug in :-)
    I use model view delegate a lot and it works



  • I got it.

    I wasn't signaling of a model update using the model's "begin/end" method pairs. I was adding content to the model using my own methods so the model really could not notify the listView there's content to view which of course resulted in no painting.



  • Check if you got the method signature exactly right. It is quite easy to forget the const, for instance.



  • QT-Creator uses a compiler that screams about signatures, namely the const at the end.



  • If you type the function signatures yourself, Qt Creator allows you to forget the const just fine. :-)



  • Then you have two functions, one const and one not...
    gives nice error prone behavior...



  • My point was, that if you think you have reimplemented a virtual function like paintEvent, but you forgot the const at the end, you can wait for along time for it to get called :-) Your application will simply use the version in the baseclass you subclassed.


Log in to reply