75
Qt Item Views The Next Generation

Qt Itemviews, The Next Generation

Embed Size (px)

Citation preview

Page 1: Qt Itemviews, The Next Generation

Qt Item ViewsThe Next Generation

Page 2: Qt Itemviews, The Next Generation

• Marius Bugge Monsen (mbm)

• Qt Developer

• Qt Widget Team Lead

Page 3: Qt Itemviews, The Next Generation

• What is Qt Item Views?

• Why a “Next Generation”?

• How Does it Work?

• Can I Start Using It?

Qt Item ViewsThe Next Generation

Page 4: Qt Itemviews, The Next Generation

What Is Qt Item Views?

Page 5: Qt Itemviews, The Next Generation
Page 6: Qt Itemviews, The Next Generation

QListView QTableView QTreeView

Page 7: Qt Itemviews, The Next Generation

• QWidget-based

• Model-View

• Since Qt 4.0

Page 8: Qt Itemviews, The Next Generation

Creative Friday!

Page 9: Qt Itemviews, The Next Generation

Why a “Next Generation”?

Page 10: Qt Itemviews, The Next Generation

... and why now?

Page 11: Qt Itemviews, The Next Generation
Page 12: Qt Itemviews, The Next Generation
Page 13: Qt Itemviews, The Next Generation
Page 14: Qt Itemviews, The Next Generation

• Lessons Learned

• Qt Development

• Competition

Page 15: Qt Itemviews, The Next Generation

• Design Lessons

• Different views - different use-cases

• Eye-candy matters

• KISS

Page 16: Qt Itemviews, The Next Generation

• Process Lessons

• Be open

• Use the API

• Encourage others to use the API

Page 17: Qt Itemviews, The Next Generation

• So What Do We Want ?

Page 18: Qt Itemviews, The Next Generation

Shark_food by starstreak007 on flickr

Page 19: Qt Itemviews, The Next Generation

• Features

• Fast

• Integrated

• Hardware Accelerated

Page 20: Qt Itemviews, The Next Generation

• API

• Discoverable

• Structured

• Clear

Page 21: Qt Itemviews, The Next Generation

• Implementation

• Simple

• Clean

• Testable

Page 22: Qt Itemviews, The Next Generation

How Does It Work?

Page 23: Qt Itemviews, The Next Generation

View Controller

Model

Page 24: Qt Itemviews, The Next Generation

Data and logicSelection state

Presentation Behavior

Page 25: Qt Itemviews, The Next Generation

Data and logic Selection state

Presentation Behavior

Page 26: Qt Itemviews, The Next Generation

QListModelInterface QListSelectionManager

QGraphicsListView QListController

Data

InputOutput

Page 27: Qt Itemviews, The Next Generation

QListModelInterfacevs.

QAbstractItemModel

Page 28: Qt Itemviews, The Next Generation

• Optimizable

• Maintainable

• Expandable

Page 29: Qt Itemviews, The Next Generation

Tree Model

List View

Adaptor

Page 30: Qt Itemviews, The Next Generation

QListWidgetNG

QListDefaultModel QListSelectionManager

QGraphicsListView QListController

Page 31: Qt Itemviews, The Next Generation

Graphics View

Item View

Page 32: Qt Itemviews, The Next Generation

int main(int argc, char *argv[]){ QApplication app(argc, argv); QListWidgetNG widget; widget.show(); return app.exec();}

Page 33: Qt Itemviews, The Next Generation

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

Page 34: Qt Itemviews, The Next Generation

Data and logic Selection state

QGraphicsListView Behavior

Page 35: Qt Itemviews, The Next Generation

• View or Layout?

Page 36: Qt Itemviews, The Next Generation

Item

View

Page 37: Qt Itemviews, The Next Generation

Item

Invisible item

Page 38: Qt Itemviews, The Next Generation

Item

Invisible item

Page 39: Qt Itemviews, The Next Generation

Item

Invisible item

Page 40: Qt Itemviews, The Next Generation

QGraphicsWidget

QGraphicsWidget

Page 41: Qt Itemviews, The Next Generation

QGraphicsWidget

QPropertyAnimation

Position

Opacity

Scale

Rotation

Size

Page 42: Qt Itemviews, The Next Generation

Demo

Page 43: Qt Itemviews, The Next Generation

Me

QGraphicsSimpleTextItem

QGraphicsPixmapItemQGraphicsSvgItem

QGraphicsLayout

Page 44: Qt Itemviews, The Next Generation

Item

Me

View

Page 45: Qt Itemviews, The Next Generation

‘SUP DAWG YO I HERD U LIKE ITEM VIEWS...

Page 46: Qt Itemviews, The Next Generation

ViewView

View

Page 47: Qt Itemviews, The Next Generation

Data and logic Selection state

QGraphicsListView Behavior

Page 48: Qt Itemviews, The Next Generation

Data and logic Selection state

Behavior

Page 49: Qt Itemviews, The Next Generation

Data and logic Selection state

Behavior

Page 50: Qt Itemviews, The Next Generation

Data and logic Selection state

PathListView Behavior

Page 51: Qt Itemviews, The Next Generation
Page 52: Qt Itemviews, The Next Generation

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

Page 53: Qt Itemviews, The Next Generation

Item

View

Page 54: Qt Itemviews, The Next Generation

Item

View

Page 55: Qt Itemviews, The Next Generation

Demo

Page 56: Qt Itemviews, The Next Generation

Data and logic Selection state

Presentation Behavior

Page 57: Qt Itemviews, The Next Generation

Data and logic Selection state

Presentation QListController

Page 58: Qt Itemviews, The Next Generation

Input Events

ControllerModel

Page 59: Qt Itemviews, The Next Generation

Item

View Input Events

Controller

Page 60: Qt Itemviews, The Next Generation

Item

View Scrollbar

Controller

Page 61: Qt Itemviews, The Next Generation

Data and logic Selection state

Presentation QListController

Page 62: Qt Itemviews, The Next Generation

Data and logic Selection state

Presentation

Page 63: Qt Itemviews, The Next Generation

Data and logic Selection state

Presentation

Page 64: Qt Itemviews, The Next Generation

Data and logic Selection state

Presentation QKineticListController

Page 65: Qt Itemviews, The Next Generation

int main(int argc, char *argv[]){ QApplication app(argc, argv); QListWidgetNG widget(new QKineticListController); widget.show(); return app.exec();}

Page 66: Qt Itemviews, The Next Generation

Can I Start Using It?

Page 67: Qt Itemviews, The Next Generation

• Yes

Page 68: Qt Itemviews, The Next Generation

• Yes, but ...

Page 69: Qt Itemviews, The Next Generation

Research!

Page 70: Qt Itemviews, The Next Generation

• Current status

• Integrating in existing applications

• Profiling and optimizing

Page 71: Qt Itemviews, The Next Generation

• Current status

• Missing features

• API may change

Page 72: Qt Itemviews, The Next Generation

• Unsolved problem

• Data Invalidation

Page 73: Qt Itemviews, The Next Generation

“Don’t expect, inspect!”

Page 75: Qt Itemviews, The Next Generation

Thank you!

Questions?