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

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.