Qt Widget In-Depth
-
Upload
qt-project -
Category
Technology
-
view
11.507 -
download
4
description
Transcript of Qt Widget In-Depth
![Page 1: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/1.jpg)
Qt Widgets In-DepthQWidget Under The Surface
![Page 2: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/2.jpg)
About Me
• Marius Bugge Monsen
• Qt Developer
• Qt Widgets Team Lead
![Page 3: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/3.jpg)
• Widgets and Window Systems
• Flags and Attributes
• The Future of Qt Widgets
![Page 4: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/4.jpg)
Widgets and Window Systemsby extranoise on flickr
![Page 5: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/5.jpg)
• Widgets and Window Systems
• Window Systems
• Windows and Widgets
• Updates and Painting
• Events and Loops
![Page 6: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/6.jpg)
• Widgets and Window Systems
• Window Systems
• Windows and Widgets
• Updates and Painting
• Events and Loops
![Page 7: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/7.jpg)
Rio
8 1/2Fresco/Berlin
FBUI
HP WindowsManaGeR
Metisse
MicroXwinNeWS
NeXT DPS
QWS
Quartz
SunView
TwinWayland X
Xynth
Y
DM
GEM
OPIE
Intuition
Microwindows
MiniGUI
OOHG
![Page 8: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/8.jpg)
• X11
• Desktop Window Manager (MS Windows)
• Quartz Compositor (Mac OS X)
• QWS
• S60 Window Manager
![Page 9: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/9.jpg)
Window Surface
![Page 10: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/10.jpg)
Surface
Surface
![Page 11: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/11.jpg)
Screen
![Page 12: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/12.jpg)
Window System
![Page 13: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/13.jpg)
Window System
![Page 14: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/14.jpg)
Window System Qt Application
#include<QtGui>int main(int argc, char *argv[]){ QApplication a(argc,argv); QWidget w; w.show(); return a.exec();}
IPC
![Page 15: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/15.jpg)
• Widgets and Window Systems
• Window Systems
• Windows and Widgets
• Updates and Painting
• Events and Loops
![Page 16: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/16.jpg)
Surface
Surface
Surface
![Page 17: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/17.jpg)
Surface
Surface Surface
![Page 18: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/18.jpg)
![Page 19: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/19.jpg)
Window
Widget
Widget
![Page 20: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/20.jpg)
Window
![Page 21: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/21.jpg)
• Widgets and Window Systems
• Window Systems
• Windows and Widgets
• Updates and Painting
• Events and Loops
![Page 22: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/22.jpg)
Paint#include<QtGui>int main(int argc, char *argv[]){ QApplication a(argc,argv); QWidget w; w.show(); return a.exec();}
Update
Window System Painting Code
![Page 23: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/23.jpg)
#include<QtGui>int main(int argc, char *argv[]){ QApplication a(argc,argv); QWidget w; w.show(); return a.exec();}
Backing StoreWindow System Painting Code
![Page 24: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/24.jpg)
Text
Text
![Page 25: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/25.jpg)
Text
Text
![Page 26: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/26.jpg)
• Client Side
• Top-Level Window
• Backing Store
• Pixmap
![Page 27: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/27.jpg)
• Server Side
• Window
• Pixmap
![Page 28: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/28.jpg)
• Client Side
• Window
• Backing Store
• Pixmap
• Server Side
• Window
• Pixmap
![Page 29: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/29.jpg)
void QWidgetPrivate::drawWidget(QPaintDevice *pdev, const QRegion &rgn, const QPoint &offset, int flags, QPainter *sharedPainter, QWidgetBackingStore *backingStore){ ... //actually send the paint event QPaintEvent e(toBePainted); QCoreApplication::sendSpontaneousEvent(q, &e); ...}
![Page 30: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/30.jpg)
• Widgets and Window Systems
• Window Systems
• Windows and Widgets
• Updates and Painting
• Events and Loops
![Page 31: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/31.jpg)
• Spontaneous Events
• Application Events
![Page 32: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/32.jpg)
Any
Inputbool W::event(QEvent *e){ if (e->type() == t) foobar(); return false;}
Event
![Page 33: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/33.jpg)
Window System
Qt Event Loop
bool W::event(QEvent *e){ if (e->type() ==
Event HandlerSocket Qt Event Dispatcher
![Page 34: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/34.jpg)
int QCoreApplication::exec(){ ... QEventLoop eventLoop; self->d_func()->in_exec = true; self->d_func()->aboutToQuitEmitted = false; int returnCode = eventLoop.exec(); ...}
![Page 35: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/35.jpg)
int QEventLoop::exec(ProcessEventsFlags flags){ ... try { while (!d->exit) processEvents(flags | WaitForMoreEvents | EventLoopExec); } catch (...) { ... --d->threadData->loopLevel; return d->returnCode;}
![Page 36: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/36.jpg)
bool QEventLoop::processEvents(ProcessEventsFlags flags){ Q_D(QEventLoop); if (!d->threadData->eventDispatcher) return false; if (flags & DeferredDeletion) QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete); return d->threadData->eventDispatcher->processEvents(flags);}
![Page 37: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/37.jpg)
bool QEventDispatcherUNIX::processEvents(QEventLoop::ProcessEventsFlags flags){ ... // we are awake, broadcast it emit awake(); QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData); ... nevents = d->doSelect(flags, tm); ...}
![Page 38: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/38.jpg)
int QEventDispatcherUNIXPrivate::doSelect( QEventLoop::ProcessEventsFlags flags, timeval *timeout){ ... // Process timers and socket notifiers - the common UNIX stuff ... nsel = q->select(highest + 1, &sn_vec[0].select_fds, &sn_vec[1].select_fds, &sn_vec[2].select_fds, timeout); ...}
![Page 39: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/39.jpg)
int QEventDispatcherUNIX::select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, timeval *timeout){ return qt_safe_select(nfds, readfds, writefds, exceptfds, timeout);}
![Page 40: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/40.jpg)
int qt_safe_select(int nfds, fd_set *fdread, fd_set *fdwrite, fd_set *fdexcept, const struct timeval *orig_timeout){ ... // loop and recalculate the timeout as needed int ret; forever { ret = ::select(nfds, fdread, fdwrite, fdexcept, &timeout); if (ret != -1 || errno != EINTR) return ret; // recalculate the timeout ... }}
![Page 41: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/41.jpg)
• select()
• poll status of file descriptors
• blocks until timeout
![Page 42: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/42.jpg)
X11
Qt Event Loop
bool W::event(QEvent *e){ if (e->type() ==
Event HandlerSocket Qt Event DispatcherXLib Queue
![Page 43: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/43.jpg)
Qt Event Queue Event Loopbool W::event(QEvent *e){ if (e->type() ==
Event Handler#include<QtGui>int main(int argc, char *argv[]){
postEvent()
![Page 44: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/44.jpg)
bool W::event(QEvent *e){ if (e->type() ==
Event Handler#include<QtGui>int main(int argc, char *argv[]){
sendEvent()
![Page 45: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/45.jpg)
• Event Propagation
![Page 46: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/46.jpg)
C
A
B
D
![Page 47: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/47.jpg)
D
C
A B
![Page 48: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/48.jpg)
D
C
A B
![Page 49: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/49.jpg)
D
C
A B
![Page 50: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/50.jpg)
D
C
A B
![Page 51: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/51.jpg)
bool QApplication::notify(QObject *receiver, QEvent *e){ ... bool res = false; if (!receiver->isWidgetType()) { res = d->notify_helper(receiver, e); } else switch (e->type()) { ...}
![Page 52: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/52.jpg)
• Widgets Propagate Events
![Page 53: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/53.jpg)
... case QEvent::StatusTip: case QEvent::WhatsThisClicked: { QWidget *w = static_cast<QWidget *>(receiver); while (w) { res = d->notify_helper(w, e); if ((res && e->isAccepted()) || w->isWindow()) break; w = w->parentWidget(); } } break; ...
![Page 54: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/54.jpg)
• Input Events Are Propagated
![Page 55: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/55.jpg)
• Input Events are propagated if
• event->isAccepted() == false
• receiver->event(e) == false
![Page 56: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/56.jpg)
bool QCoreApplicationPrivate::notify_helper(QObject *receiver, QEvent * event){ // send to all application event filters if (sendThroughApplicationEventFilters(receiver, event)) return true; // send to all receiver event filters if (sendThroughObjectEventFilters(receiver, event)) return true; // deliver the event return receiver->event(event);}
![Page 57: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/57.jpg)
Flags and Attributes
by Dan Queiroz on flickr
![Page 58: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/58.jpg)
• Flags and Attributes
• Window Types
• Window Hints
• Widget States
• Widget Attributes
![Page 59: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/59.jpg)
• QWidget
• QPaintDevice
• QObject
• QWindowSurface
![Page 60: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/60.jpg)
• Flags and Attributes
• Window Types
• Window Hints
• Widget States
• Widget Attributes
![Page 61: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/61.jpg)
• Window Types
• Widget
• Window
![Page 62: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/62.jpg)
• Dialog
• Sheet (Mac)
• Drawer (Mac)
• Popup
• ToolTip
• SplashScreen
• Desktop
• SubWindow (MDI)
![Page 63: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/63.jpg)
![Page 64: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/64.jpg)
• Flags and Attributes
• Window Types
• Window Hints
• Widget States
• Widget Attributes
![Page 65: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/65.jpg)
• CustomizeWindowHint
• WindowTitleHint
• WindowSystemMenuHint
• WindowMinimizeButtonHint
• WindowMaximizeButtonHint
• WindowMinMaxButtonHint
• WindowCloseButtonHint
• WindowContextHelpButtonHint
• MacWindowToolBarButtonHint
• BypassGraphicsProxyWidget
• WindowShadeButtonHint
• WindowStaysOnTopHint
• WindowStaysOnBottomHint
• WindowOkButtonHint (WinCE)
• WindowCancelButtonHint (WinCE)
![Page 66: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/66.jpg)
• Flags and Attributes
• Window Types
• Window Hints
• Widget States
• Widget Attributes
![Page 67: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/67.jpg)
• WindowState
• WindowNoState
• WindowMinimized
• WindowMaximized
• WindowFullScreen
• WindowActive
![Page 68: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/68.jpg)
• Flags and Attributes
• Window Types
• Window Hints
• Widget States
• Widget Attributes
![Page 69: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/69.jpg)
• Qt::Widget Attribute
• 124 Attributes
• setAttribute()
• testAttribute()
![Page 70: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/70.jpg)
• Qt::WA_AcceptDrops
• QWidget::setAcceptDrops()
![Page 71: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/71.jpg)
Tips and Tricksby robclimbing on flickr
![Page 72: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/72.jpg)
• Qt::WA_StaticContents
![Page 73: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/73.jpg)
Static Contents
Exposed
Expo
sed
![Page 74: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/74.jpg)
• Qt::WA_NoSystemBackground
![Page 75: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/75.jpg)
• Qt::WA_OpaquePaintEvent
![Page 76: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/76.jpg)
• QWidget::autoFillBackground
• Qt::WA_OpaquePaintEvent
![Page 77: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/77.jpg)
![Page 78: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/78.jpg)
• QWidget::scroll()
• QWidget::autoFillBackground
• Qt::WA_OpaquePaintEvent
![Page 79: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/79.jpg)
Scrolled
Exposed
Concealed
![Page 80: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/80.jpg)
• Qt::WA_TranslucentBackground
![Page 81: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/81.jpg)
#include <QtGui>
int main(int argc, char *argv[]){ QApplication app(argc, argv); QPixmap skin("transparency.png"); QLabel widget; widget.setPixmap(skin); widget.setWindowFlags(Qt::Window |Qt::CustomizeWindowHint |Qt::FramelessWindowHint); widget.setAttribute(Qt::WA_TranslucentBackground); widget.resize(skin.size()); widget.show(); return app.exec();}
![Page 82: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/82.jpg)
![Page 83: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/83.jpg)
The Future of Qt Widgetsby jeff_c on flickr
![Page 84: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/84.jpg)
• The story of two APIs ...
![Page 85: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/85.jpg)
• QWidget
• Widget Hierarchy
• QGraphicsItem
• Scene Graph
![Page 86: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/86.jpg)
• QWidget
• Alien Widgets
• Graphics Effects
• Disable Clipping ?
• Disable Move Events ?
• Transformations ?
![Page 87: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/87.jpg)
• Is it possible ?
![Page 88: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/88.jpg)
• Is it possible in Qt 4.x ?
![Page 89: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/89.jpg)
Thank you!
Questions?
![Page 90: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/90.jpg)
Bonus Material
![Page 91: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/91.jpg)
Qt Developer DaysWindow System
![Page 92: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/92.jpg)
Scene Graph IPCWindow Surface
![Page 93: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/93.jpg)
QGraphicsScene QTcpSocketQSharedMemory
![Page 94: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/94.jpg)
• Server
• Window
![Page 95: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/95.jpg)
• Server
• Connections
• Scene Graph
![Page 96: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/96.jpg)
• Window
• Surface
• Geometry
• Id
![Page 97: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/97.jpg)
Server
#include<QtGui>int main(int argc, char *argv[]){ QApplication a(argc,argv); QWidget w; w.show(); return a.exec();}
Client
![Page 98: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/98.jpg)
Server
#include<QtGui>int main(int argc, char *argv[]){ QApplication a(argc,argv); QWidget w; w.show(); return a.exec();}
Client
?
Protocol
![Page 99: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/99.jpg)
• Message
• Request
• Reply
• Event
![Page 100: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/100.jpg)
#include<QtGui>int main(int argc, char *argv[]){ QApplication a(argc,argv); QWidget w; w.show(); return a.exec();}
Request
#include<QtGui>int main(int argc, char *argv[]){ QApplication a(argc,argv); QWidget w; w.show(); return a.exec();}
Response
![Page 101: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/101.jpg)
bool W::event(QEvent *e){ if (e->type() == t) foobar(); return false;}
Event
![Page 102: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/102.jpg)
Lighthouse
![Page 103: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/103.jpg)
• Research!
• Qt Graphicssystem Interface
• Makes Qt ports easy
![Page 104: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/104.jpg)
• QGraphicsSystem
• QGraphicsSystemScreen
• QWindowSurface
![Page 105: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/105.jpg)
• QGraphicsSystem
• Window Surfaces
• Server Communication
![Page 106: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/106.jpg)
• QGraphicsSystemScreen
• Screen Information
• Depth
• Resolution
• Size
![Page 107: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/107.jpg)
• QWindowSurface
• Surface
• Geometry
• Id
![Page 108: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/108.jpg)
Demo
![Page 109: Qt Widget In-Depth](https://reader033.fdocuments.in/reader033/viewer/2022052505/5551d852b4c90501638b45a3/html5/thumbnails/109.jpg)
• git://gitorious.org/+qt-developers/qt/lighthouse.git
Source Code