Qt Item Views
  The Next Generation
•   Marius Bugge Monsen

•   Qt Software, Nokia

•   Senior SW Engineer

•   Lead, Qt Widget Team 2
Qt Item Views

• What is it?
• Why do we need a “Next Generation”?
• How does it work?
List View   Table View   Tree View
• Experience
• Graphics View
• Animation Framework
• Competition
Creative Friday
Warning:
Work in progress!
Model


View           Controller
Data and logic
                       Selection state


Presentation              Behavior
Data and logic   Selection state


Presentation        Behavior
Data


QListModelInterface   QListSelectionManager


QGraphicsListView        QListController



    Output                  Input
Data


                    QListSelectionManager


QGraphicsListView      QListController



   Output                 Input
QListWidgetNG


                    QListSelectionManager


QGraphicsListView      QListController
QListWidgetNG


QListDefaultModel   QListSelectionManager


QGraphicsListView      QListController
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   QListWidgetNG widget;
   widget.show();
   return app.exec();
}
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   QListWidgetNG widget;
   widget.controller()->setModel(new MyData(&widget));
   widget.show();
   return app.exec();
}
Data and logic    Selection state


QGraphicsListView      Behavior
View



Item
Invisible item




    Item
Invisible item




    Item
Invisible item




    Item
QGraphicsWidget



  QGraphicsWidget
QPropertyAnimation


                 QGraphicsWidget
Position                                      Size


       Opacity                     Rotation

                     Scale
QGraphicsSimpleTextItem


                                       QGraphicsLayout




                          Me



QGraphicsPixmapItem
                                      QGraphicsSvgItem
‘SUP DAWG YO I HERD U LIKE ITEM VIEWS...
View



View
Data and logic    Selection state


QGraphicsListView      Behavior
Data and logic   Selection state


                    Behavior
Data and logic   Selection state


                    Behavior
Data and logic   Selection state


PathListView        Behavior
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   QListWidgetNG widget;
   widget.controller()->setView(new MyPathView);
   widget.show();
   return app.exec();
}
View



Item
View



Item
Demo
View or Layout ?
Data and logic   Selection state


Presentation        Behavior
Data and logic   Selection state


Presentation     QListController
View                Input Events



Item   Controller
View                Scrollbar



Item   Controller
Data and logic   Selection state


Presentation     QListController
Data and logic   Selection state


Presentation
Data and logic   Selection state


Presentation
Data and logic       Selection state


Presentation     QKineticListController
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   QListWidgetNG widget(new QKineticListController);
   widget.show();
   return app.exec();
}
Demo
http://labs.trolltech.com/page/Projects/Itemview/ItemviewsNG
Thank you!

Questions?

Qt Itemviews, The Next Generation (Bossa09)