SlideShare uma empresa Scribd logo
1 de 109
Baixar para ler offline
Qt Widgets In-Depth
    QWidget Under The Surface
About Me

• Marius Bugge Monsen
• Qt Developer
• Qt Widgets Team Lead
• Widgets and Window Systems
• Flags and Attributes
• The Future of Qt Widgets
by extranoise on flickr




Widgets and Window Systems
• Widgets and Window Systems
 • Window Systems
 • Windows and Widgets
 • Updates and Painting
 • Events and Loops
• Widgets and Window Systems
 • Window Systems
 • Windows and Widgets
 • Updates and Painting
 • Events and Loops
QWS       SunView
MiniGUI                             Metisse
     Rio    Microwindows
DM                          Fresco/Berlin
     8 1/2 GEM                        ManaGeR
HP Windows                  OOHG
               Xynth
                        MicroXwin       Intuition
Y             FBUI
     NeWS
                     NeXT DPS           Quartz
Wayland      Twin
                     OPIE           X
• X11
• Desktop Window Manager (MS Windows)
• Quartz Compositor (Mac OS X)
• QWS
• S60 Window Manager
Window Surface
Surface


Surface
Screen
Window System
Window System
Window System         Qt Application


                IPC     #include<QtGui>
                        int main(int argc, char *argv[])
                        {
                          QApplication a(argc,argv);
                          QWidget w;
                          w.show();
                          return a.exec();
                        }
• Widgets and Window Systems
 • Window Systems
 • Windows and Widgets
 • Updates and Painting
 • Events and Loops
Surface


          Surface


Surface
Surface


Surface             Surface
Widget


         Window


Widget
Window
• Widgets and Window Systems
 • Window Systems
 • Windows and Widgets
 • Updates and Painting
 • Events and Loops
Window System   Paint    Painting Code
                            #include<QtGui>
                            int main(int argc, char
                            *argv[])
                            {
                              QApplication a
                            (argc,argv);
                              QWidget w;
                              w.show();
                              return a.exec();
                            }




                Update
Window System   Backing Store   Painting Code
                                   #include<QtGui>
                                   int main(int argc, char
                                   *argv[])
                                   {
                                     QApplication a
                                   (argc,argv);
                                     QWidget w;
                                     w.show();
                                     return a.exec();
                                   }
Text


Text
Text


Text
• Client Side
 • Top-Level Window
   • Backing Store
   • Pixmap
• Server Side
 • Window
 • Pixmap
• Client Side        • Server Side
 • Window             • Window
   • Backing Store    • Pixmap
   • Pixmap
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);
  ...
}
• Widgets and Window Systems
 • Window Systems
 • Windows and Widgets
 • Updates and Painting
 • Events and Loops
• Spontaneous Events
• Application Events
Input   Event   bool W::event(QEvent *e)
                      {

Any                     if (e->type() == t)
                            foobar();
                        return false;
                      }
Window System      Socket       Qt Event Dispatcher Event Handler
                                                        bool
                                                        W::event
                                                        (QEvent *e)
                                                        {
                                                          if (e-
                                                        >type() ==




                Qt Event Loop
int QCoreApplication::exec()
{
   ...
   QEventLoop eventLoop;
   self->d_func()->in_exec = true;
   self->d_func()->aboutToQuitEmitted = false;
   int returnCode = eventLoop.exec();
   ...
}
int QEventLoop::exec(ProcessEventsFlags flags)
{
   ...
   try {
       while (!d->exit)
         processEvents(flags | WaitForMoreEvents
                            | EventLoopExec);
   } catch (...) {
   ...
   --d->threadData->loopLevel;
   return d->returnCode;
}
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);
}
bool QEventDispatcherUNIX::processEvents
(QEventLoop::ProcessEventsFlags flags)
{
  ...
  // we are awake, broadcast it
  emit awake();
  QCoreApplicationPrivate::sendPostedEvents(0, 0,
      d->threadData);
  ...
  nevents = d->doSelect(flags, tm);
  ...
}
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);
   ...
}
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);
}
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
       ...
   }
}
• select()
 • poll status of file descriptors
 • blocks until timeout
X11      Socket       XLib Queue   Qt Event Dispatcher Event Handler
                                                           bool
                                                           W::event
                                                           (QEvent *e)
                                                           {
                                                             if (e-
                                                           >type() ==




      Qt Event Loop
postEvent()       Qt Event Queue   Event Loop   Event Handler
   #include<Q                                       bool
   tGui>                                            W::event
   int main(int                                     (QEvent *e)
   argc, char                                       {
   *argv[])                                           if (e-
   {                                                >type() ==
sendEvent()       Event Handler
   #include<Q         bool
   tGui>              W::event
   int main(int       (QEvent *e)
   argc, char         {
   *argv[])             if (e-
   {                  >type() ==
• Event Propagation
D

A

    C
        B
D


    C


A       B
D


    C


A       B
D


    C


A       B
D


    C


A       B
bool QApplication::notify(QObject *receiver, QEvent *e)
{
  ...
  bool res = false;
  if (!receiver->isWidgetType()) {
      res = d->notify_helper(receiver, e);
  } else switch (e->type()) {
  ...
}
• Widgets Propagate Events
...
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;
    ...
• Input Events Are Propagated
• Input Events are propagated if
 • event->isAccepted() == false
 • receiver->event(e) == false
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);
}
by Dan Queiroz on flickr




Flags and Attributes
• Flags and Attributes
 • Window Types
 • Window Hints
 • Widget States
 • Widget Attributes
• QWidget
 • QPaintDevice
 • QObject
• QWindowSurface
• Flags and Attributes
 • Window Types
 • Window Hints
 • Widget States
 • Widget Attributes
• Window Types
 • Widget
 • Window
•   Dialog

•   Sheet (Mac)

•   Drawer (Mac)

•   Popup

•   ToolTip

•   SplashScreen

•   Desktop

•   SubWindow (MDI)
• Flags and Attributes
 • Window Types
 • Window Hints
 • Widget States
 • Widget Attributes
•   CustomizeWindowHint           •   MacWindowToolBarButtonHint

•   WindowTitleHint               •   BypassGraphicsProxyWidget

•   WindowSystemMenuHint          •   WindowShadeButtonHint

•   WindowMinimizeButtonHint      •   WindowStaysOnTopHint

•   WindowMaximizeButtonHint      •   WindowStaysOnBottomHint

•   WindowMinMaxButtonHint        •   WindowOkButtonHint (WinCE)

•   WindowCloseButtonHint         •   WindowCancelButtonHint (WinCE)

•   WindowContextHelpButtonHint
• Flags and Attributes
 • Window Types
 • Window Hints
 • Widget States
 • Widget Attributes
• WindowState
 • WindowNoState
 • WindowMinimized
 • WindowMaximized
 • WindowFullScreen
 • WindowActive
• Flags and Attributes
 • Window Types
 • Window Hints
 • Widget States
 • Widget Attributes
• Qt::Widget Attribute
 • 124 Attributes
 • setAttribute()
 • testAttribute()
• Qt::WA_AcceptDrops
• QWidget::setAcceptDrops()
by robclimbing on flickr




Tips and Tricks
• Qt::WA_StaticContents
Exposed
Static Contents




    Exposed
• Qt::WA_NoSystemBackground
• Qt::WA_OpaquePaintEvent
• QWidget::autoFillBackground
• Qt::WA_OpaquePaintEvent
• QWidget::scroll()
 • QWidget::autoFillBackground
 • Qt::WA_OpaquePaintEvent
Concealed




Scrolled




Exposed
• Qt::WA_TranslucentBackground
#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();
}
by jeff_c on flickr




The Future of Qt Widgets
• The story of two APIs ...
• QWidget
 • Widget Hierarchy
• QGraphicsItem
 • Scene Graph
• QWidget
 • Alien Widgets
 • Graphics Effects
 • Disable Clipping ?
 • Disable Move Events ?
 • Transformations ?
• Is it possible ?
• Is it possible in Qt 4.x ?
Thank you!

Questions?
Bonus Material
Qt Developer Days
 Window System
Window Surface   Scene Graph   IPC
QSharedMemory QGraphicsScene   QTcpSocket
• Server
• Window
• Server
 • Connections
 • Scene Graph
• Window
 • Surface
 • Geometry
 • Id
Server       Client

         #include<QtGui>
         int main(int argc, char *argv[])
         {
           QApplication a(argc,argv);
           QWidget w;
           w.show();
           return a.exec();
         }
Server   Protocol       Client




           ?
                    #include<QtGui>
                    int main(int argc, char *argv[])
                    {
                      QApplication a(argc,argv);
                      QWidget w;
                      w.show();
                      return a.exec();
                    }
• Message
 • Request
 • Reply
 • Event
Request    #include<QtGui>
           int main(int argc, char
           *argv[])
           {
             QApplication a
           (argc,argv);
             QWidget w;
             w.show();
             return a.exec();
           }




Response   #include<QtGui>
           int main(int argc, char
           *argv[])
           {
             QApplication a
           (argc,argv);
             QWidget w;
             w.show();
             return a.exec();
           }
Event   bool W::event(QEvent *e)
        {
          if (e->type() == t)
              foobar();
          return false;
        }
Lighthouse
• Research!
• Qt Graphicssystem Interface
• Makes Qt ports easy
• QGraphicsSystem
• QGraphicsSystemScreen
• QWindowSurface
• QGraphicsSystem
 • Window Surfaces
 • Server Communication
• QGraphicsSystemScreen
 • Screen Information
   • Depth
   • Resolution
   • Size
• QWindowSurface
 • Surface
 • Geometry
 • Id
Demo
Source Code


•   git://gitorious.org/+qt-developers/qt/lighthouse.git

Mais conteúdo relacionado

Mais procurados

Qt Memory Management & Signal and Slots
Qt Memory Management & Signal and SlotsQt Memory Management & Signal and Slots
Qt Memory Management & Signal and SlotsJussi Pohjolainen
 
Untitled presentation(4)
Untitled presentation(4)Untitled presentation(4)
Untitled presentation(4)chan20kaur
 
Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2NokiaAppForum
 
Lo Mejor Del Pdc2008 El Futrode C#
Lo Mejor Del Pdc2008 El Futrode C#Lo Mejor Del Pdc2008 El Futrode C#
Lo Mejor Del Pdc2008 El Futrode C#Juan Pablo
 
Promise: async programming hero
Promise: async programming heroPromise: async programming hero
Promise: async programming heroThe Software House
 
Developer Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duoDeveloper Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duoThe Software House
 
Let the type system be your friend
Let the type system be your friendLet the type system be your friend
Let the type system be your friendThe Software House
 
Reflection in Go
Reflection in GoReflection in Go
Reflection in Gostrikr .
 
Svcc Building Rich Applications with Groovy's SwingBuilder
Svcc Building Rich Applications with Groovy's SwingBuilderSvcc Building Rich Applications with Groovy's SwingBuilder
Svcc Building Rich Applications with Groovy's SwingBuilderAndres Almiray
 
Svcc Java2D And Groovy
Svcc Java2D And GroovySvcc Java2D And Groovy
Svcc Java2D And GroovyAndres Almiray
 
The Ring programming language version 1.6 book - Part 176 of 189
The Ring programming language version 1.6 book - Part 176 of 189The Ring programming language version 1.6 book - Part 176 of 189
The Ring programming language version 1.6 book - Part 176 of 189Mahmoud Samir Fayed
 
ADG Poznań - Kotlin for Android developers
ADG Poznań - Kotlin for Android developersADG Poznań - Kotlin for Android developers
ADG Poznań - Kotlin for Android developersBartosz Kosarzycki
 
Objective-C Runtime overview
Objective-C Runtime overviewObjective-C Runtime overview
Objective-C Runtime overviewFantageek
 

Mais procurados (20)

Day 1
Day 1Day 1
Day 1
 
Qt Memory Management & Signal and Slots
Qt Memory Management & Signal and SlotsQt Memory Management & Signal and Slots
Qt Memory Management & Signal and Slots
 
Untitled presentation(4)
Untitled presentation(4)Untitled presentation(4)
Untitled presentation(4)
 
Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2
 
Lo Mejor Del Pdc2008 El Futrode C#
Lo Mejor Del Pdc2008 El Futrode C#Lo Mejor Del Pdc2008 El Futrode C#
Lo Mejor Del Pdc2008 El Futrode C#
 
Promise: async programming hero
Promise: async programming heroPromise: async programming hero
Promise: async programming hero
 
For mobile 5/13'
For mobile 5/13'For mobile 5/13'
For mobile 5/13'
 
Developer Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duoDeveloper Experience i TypeScript. Najbardziej ikoniczne duo
Developer Experience i TypeScript. Najbardziej ikoniczne duo
 
Treinamento Qt básico - aula III
Treinamento Qt básico - aula IIITreinamento Qt básico - aula III
Treinamento Qt básico - aula III
 
Let the type system be your friend
Let the type system be your friendLet the type system be your friend
Let the type system be your friend
 
Reflection in Go
Reflection in GoReflection in Go
Reflection in Go
 
Vulkan 1.1 Reference Guide
Vulkan 1.1 Reference GuideVulkan 1.1 Reference Guide
Vulkan 1.1 Reference Guide
 
Svcc Building Rich Applications with Groovy's SwingBuilder
Svcc Building Rich Applications with Groovy's SwingBuilderSvcc Building Rich Applications with Groovy's SwingBuilder
Svcc Building Rich Applications with Groovy's SwingBuilder
 
Introduction to typescript
Introduction to typescriptIntroduction to typescript
Introduction to typescript
 
Svcc Groovy Testing
Svcc Groovy TestingSvcc Groovy Testing
Svcc Groovy Testing
 
Svcc Java2D And Groovy
Svcc Java2D And GroovySvcc Java2D And Groovy
Svcc Java2D And Groovy
 
The Ring programming language version 1.6 book - Part 176 of 189
The Ring programming language version 1.6 book - Part 176 of 189The Ring programming language version 1.6 book - Part 176 of 189
The Ring programming language version 1.6 book - Part 176 of 189
 
OpenVG 1.1 Reference Card
OpenVG 1.1 Reference Card OpenVG 1.1 Reference Card
OpenVG 1.1 Reference Card
 
ADG Poznań - Kotlin for Android developers
ADG Poznań - Kotlin for Android developersADG Poznań - Kotlin for Android developers
ADG Poznań - Kotlin for Android developers
 
Objective-C Runtime overview
Objective-C Runtime overviewObjective-C Runtime overview
Objective-C Runtime overview
 

Destaque

05 10
05 1005 10
05 10CMC
 
How political journalism is changing UK politics
How political journalism is changing UK politicsHow political journalism is changing UK politics
How political journalism is changing UK politicsPOLIS LSE
 
Social india conference 2011
Social india conference 2011Social india conference 2011
Social india conference 2011santoshwm
 
Whataburger Account Planning Project
Whataburger Account Planning ProjectWhataburger Account Planning Project
Whataburger Account Planning ProjectKathryn Drake
 
3ο συνέδριο social media ioc3 via sotomi
3ο συνέδριο social media ioc3 via sotomi3ο συνέδριο social media ioc3 via sotomi
3ο συνέδριο social media ioc3 via sotomiIoC gr
 

Destaque (6)

05 10
05 1005 10
05 10
 
How political journalism is changing UK politics
How political journalism is changing UK politicsHow political journalism is changing UK politics
How political journalism is changing UK politics
 
Social india conference 2011
Social india conference 2011Social india conference 2011
Social india conference 2011
 
The Qt 4 Item Views
The Qt 4 Item ViewsThe Qt 4 Item Views
The Qt 4 Item Views
 
Whataburger Account Planning Project
Whataburger Account Planning ProjectWhataburger Account Planning Project
Whataburger Account Planning Project
 
3ο συνέδριο social media ioc3 via sotomi
3ο συνέδριο social media ioc3 via sotomi3ο συνέδριο social media ioc3 via sotomi
3ο συνέδριο social media ioc3 via sotomi
 

Semelhante a Qt Widgets In Depth

05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics05 - Qt External Interaction and Graphics
05 - Qt External Interaction and GraphicsAndreas Jakl
 
Qt & Webkit
Qt & WebkitQt & Webkit
Qt & WebkitQT-day
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Applicationaccount inactive
 
Petri Niemi Qt Advanced Part 1
Petri Niemi Qt Advanced Part 1Petri Niemi Qt Advanced Part 1
Petri Niemi Qt Advanced Part 1NokiaAppForum
 
[C++ gui programming with qt4] chap9
[C++ gui programming with qt4] chap9[C++ gui programming with qt4] chap9
[C++ gui programming with qt4] chap9Shih-Hsiang Lin
 
Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4ICS
 
In Class AssignmetzCST280W13a-1.pdfCST 280 In-Class Pract.docx
In Class AssignmetzCST280W13a-1.pdfCST 280 In-Class Pract.docxIn Class AssignmetzCST280W13a-1.pdfCST 280 In-Class Pract.docx
In Class AssignmetzCST280W13a-1.pdfCST 280 In-Class Pract.docxbradburgess22840
 
The Ring programming language version 1.2 book - Part 60 of 84
The Ring programming language version 1.2 book - Part 60 of 84The Ring programming language version 1.2 book - Part 60 of 84
The Ring programming language version 1.2 book - Part 60 of 84Mahmoud Samir Fayed
 
Евгений Крутько, Многопоточные вычисления, современный подход.
Евгений Крутько, Многопоточные вычисления, современный подход.Евгений Крутько, Многопоточные вычисления, современный подход.
Евгений Крутько, Многопоточные вычисления, современный подход.Platonov Sergey
 
The Ring programming language version 1.9 book - Part 111 of 210
The Ring programming language version 1.9 book - Part 111 of 210The Ring programming language version 1.9 book - Part 111 of 210
The Ring programming language version 1.9 book - Part 111 of 210Mahmoud Samir Fayed
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰KAI CHU CHUNG
 
Apache PIG - User Defined Functions
Apache PIG - User Defined FunctionsApache PIG - User Defined Functions
Apache PIG - User Defined FunctionsChristoph Bauer
 
Online Meetup: Why should container system / platform builders care about con...
Online Meetup: Why should container system / platform builders care about con...Online Meetup: Why should container system / platform builders care about con...
Online Meetup: Why should container system / platform builders care about con...Docker, Inc.
 

Semelhante a Qt Widgets In Depth (20)

05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics
 
Qt Application Programming with C++ - Part 2
Qt Application Programming with C++ - Part 2Qt Application Programming with C++ - Part 2
Qt Application Programming with C++ - Part 2
 
Qt & Webkit
Qt & WebkitQt & Webkit
Qt & Webkit
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Application
 
Petri Niemi Qt Advanced Part 1
Petri Niemi Qt Advanced Part 1Petri Niemi Qt Advanced Part 1
Petri Niemi Qt Advanced Part 1
 
#JavaFX.forReal() - ElsassJUG
#JavaFX.forReal() - ElsassJUG#JavaFX.forReal() - ElsassJUG
#JavaFX.forReal() - ElsassJUG
 
[C++ gui programming with qt4] chap9
[C++ gui programming with qt4] chap9[C++ gui programming with qt4] chap9
[C++ gui programming with qt4] chap9
 
Qt Workshop
Qt WorkshopQt Workshop
Qt Workshop
 
Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4
 
In Class AssignmetzCST280W13a-1.pdfCST 280 In-Class Pract.docx
In Class AssignmetzCST280W13a-1.pdfCST 280 In-Class Pract.docxIn Class AssignmetzCST280W13a-1.pdfCST 280 In-Class Pract.docx
In Class AssignmetzCST280W13a-1.pdfCST 280 In-Class Pract.docx
 
The Future of Qt Widgets
The Future of Qt WidgetsThe Future of Qt Widgets
The Future of Qt Widgets
 
The Ring programming language version 1.2 book - Part 60 of 84
The Ring programming language version 1.2 book - Part 60 of 84The Ring programming language version 1.2 book - Part 60 of 84
The Ring programming language version 1.2 book - Part 60 of 84
 
Евгений Крутько, Многопоточные вычисления, современный подход.
Евгений Крутько, Многопоточные вычисления, современный подход.Евгений Крутько, Многопоточные вычисления, современный подход.
Евгений Крутько, Многопоточные вычисления, современный подход.
 
The Ring programming language version 1.9 book - Part 111 of 210
The Ring programming language version 1.9 book - Part 111 of 210The Ring programming language version 1.9 book - Part 111 of 210
The Ring programming language version 1.9 book - Part 111 of 210
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
 
Qt coin3d soqt
Qt coin3d soqtQt coin3d soqt
Qt coin3d soqt
 
Apache PIG - User Defined Functions
Apache PIG - User Defined FunctionsApache PIG - User Defined Functions
Apache PIG - User Defined Functions
 
Andes open cl for RISC-V
Andes open cl for RISC-VAndes open cl for RISC-V
Andes open cl for RISC-V
 
Multi qubit entanglement
Multi qubit entanglementMulti qubit entanglement
Multi qubit entanglement
 
Online Meetup: Why should container system / platform builders care about con...
Online Meetup: Why should container system / platform builders care about con...Online Meetup: Why should container system / platform builders care about con...
Online Meetup: Why should container system / platform builders care about con...
 

Mais de Marius Bugge Monsen

The Anatomy of Real World Apps - Dissecting cross-platform apps written using...
The Anatomy of Real World Apps - Dissecting cross-platform apps written using...The Anatomy of Real World Apps - Dissecting cross-platform apps written using...
The Anatomy of Real World Apps - Dissecting cross-platform apps written using...Marius Bugge Monsen
 
How to hire and keep good people
How to hire and keep good peopleHow to hire and keep good people
How to hire and keep good peopleMarius Bugge Monsen
 
Qt Itemviews, The Next Generation
Qt Itemviews, The Next GenerationQt Itemviews, The Next Generation
Qt Itemviews, The Next GenerationMarius Bugge Monsen
 
Qt Itemviews, The Next Generation (Bossa09)
Qt Itemviews, The Next Generation (Bossa09)Qt Itemviews, The Next Generation (Bossa09)
Qt Itemviews, The Next Generation (Bossa09)Marius Bugge Monsen
 

Mais de Marius Bugge Monsen (7)

The Anatomy of Real World Apps - Dissecting cross-platform apps written using...
The Anatomy of Real World Apps - Dissecting cross-platform apps written using...The Anatomy of Real World Apps - Dissecting cross-platform apps written using...
The Anatomy of Real World Apps - Dissecting cross-platform apps written using...
 
About Cutehacks
About CutehacksAbout Cutehacks
About Cutehacks
 
How to hire and keep good people
How to hire and keep good peopleHow to hire and keep good people
How to hire and keep good people
 
I can see your house from here
I can see your house from hereI can see your house from here
I can see your house from here
 
IPC with Qt
IPC with QtIPC with Qt
IPC with Qt
 
Qt Itemviews, The Next Generation
Qt Itemviews, The Next GenerationQt Itemviews, The Next Generation
Qt Itemviews, The Next Generation
 
Qt Itemviews, The Next Generation (Bossa09)
Qt Itemviews, The Next Generation (Bossa09)Qt Itemviews, The Next Generation (Bossa09)
Qt Itemviews, The Next Generation (Bossa09)
 

Último

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 

Último (20)

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 

Qt Widgets In Depth