SlideShare a Scribd company logo
DAZ Studio
Advanced 3D Graphics Empowered by Qt
DAZ 3D




         1
DAZ 3D


• DAZ 3D – What we’re all about
  – “Unleash the Artist Within”
     • Bring 3D art to the masses.
  – High quality virtual 3D figures and content.
  – Innovative software which enables anyone to create
    artistic images.
  – A synergistic community which learns, shares, and
    grows together.




                                                         2
DAZ 3D


• History of DAZ 3D
  – DAZ 3D began as a division of the Zygote Media
    Group creating realistic virtual figures.
  – In December of 2000 it became an independent
    corporation and shortly after opened an online store
    for 3D figures and content at www.daz3d.com.
  – Since then it has grown to provide software
    applications which help users get the most out of their
    virtual content.



                                                              3
DAZ Studio




             4
DAZ Studio

• In the beginning DAZ 3D had some great 3D
  figures and content, but relied on another
  company’s software to display this content.
• We needed a way to showcase our content and
  remove our reliance on 3rd party applications.
• DAZ Studio was born.




                                                   5
DAZ Studio


• DAZ Studio is a feature rich 3D figure modeling,
  posing, and animation tool.
• It’s a vehicle for getting 3D content into the
  hands of users.
  – Get it into as many hands as possible.
  – It’s free!
• It pushes 3D content to new heights with new
  ideas and innovations.



                                                     6
DAZ Studio


• Designing DAZ Studio
   – We needed an app with a unique and custom look.
   – We needed an application framework that would give
     quick and flexible results.
   – We needed Windows and Mac versions.
   – We needed a scriptable application.
• Qt fit perfectly into our goals.




                                                          7
DAZ Studio


• Why Qt?
  –   Versatility of interface components
  –   Cross platform support
  –   Ease of development
  –   Integrated scripting capability
• Since DAZ Studio’s inception in 2002 we’ve
  relied heavily on Qt, and it has been a huge
  benefit.



                                                 8
UI Versatility




                 9
UI Versatility



• Some applications need to look native to a
  specific platform – Qt does this well.
• With other applications, you often want a unique
  and eye-catching look. – Qt also does this well.
• We want anyone who sees DAZ Studio to be
  drawn in and have to try it.
• Here’s what we came up with:



                                                     10
UI Versatility




                 11
Just Kidding!




                12
UI Versatility




                 13
UI Versatility




                 14
UI Versatility




                 15
UI Versatility


• Familiar widgets can still have unique style
  – Content pane using Model/View architecture
• Completely new widgets are also easy to create
  – Puppeteer – innovative user interface for posing and
    shaping figures
• OpenGL Widgets for real-time 3D displays




                                                           16
UI Versatility




                 17
UI Versatility


• Styles
  – We wanted a way to easily change the whole look of
    the application through “skins” or styles.
  – This was before CSS styles were introduced in Qt4.
  – We created an XML based style system which
    controls how widgets are drawn.
  – The style defines a set of drawing commands for how
    each widget should be drawn depending on its
    current state.
  – Supports images and basic drawing operations.


                                                          18
UI Versatility


• Styles
  – Savvy users are able to create their own styles.
  – We’re able to mimic the look of other applications in
    our lineup, so users can have more familiar and
    consistent experiences.
  – Most of this would have been very difficult without the
    powerful styling framework that Qt already had.
  – We’re currently exploring Qt Style sheets and are
    excited for the possibilities they’ll provide.




                                                              19
UI Versatility


• Layouts
  – Not all users have the same work flow.
  – Qt provides the flexibility to create completely
    customizable window layouts.
  – Layouts can be arranged by the user and saved for
    later use.
  – Users can quickly switch between multiple layouts
    based on the tasks at hand.




                                                        20
Cross Platform Support




                         21
Cross Platform Support


• Whether Windows, Mac OS X, Linux, or any
  other supported system, Qt makes it easy to
  support multiple platforms.
• Design interface elements once, and they just
  work on other platforms.
• No need to deal with often complicated setup for
  native windows, widgets, file IO, etc.
• Spend less time worrying about details and
  more time getting stuff done.


                                                     22
Cross Platform Support


• Porting DAZ Studio to Mac was straightforward.
  –   Initially DAZ Studio was developed on Windows.
  –   Basic functionality was working in about 2 weeks.
  –   It would not have been possible without Qt.
  –   Most development is still done on Windows, without
      having to worry that it won’t work on Mac OS X.




                                                           23
Scripting Support




                    24
Scripting Support


• Scripting support in an application is something
  that may not seem very useful at first, but it
  provides a lot of flexibility and power.
   – Gives the end user the ability to add the functionality
     that they need.
   – Allows for features that may not be fully known at the
     time of release.
   – Gives developers tools for prototyping and testing.
• Qt makes it really easy to have full scripting
  capabilities.

                                                               25
Scripting Support


• A Scripting interface was an important design
  goal for DAZ Studio.
• Originally we used the open-source SWIG toolkit
  to generate Python Bindings.
• When QSA (Qt Script for Applications) was
  introduced for Qt 3, we were early adopters.
• QSA made a scripting interface for DAZ Studio
  much easier to create and maintain.
• The same classes that provide the plug-in SDK
  also provide the scripting interface.

                                                    26
Scripting Support


• In Qt 4, QSA has been replaced by QtScript.
• QtScript is now a part of the core Qt framework and is
  more standards compliant.
• Scripting provides many benefits to our users:
   – Many tasks in DAZ Studio have been automated with scripts
   – Content presets are provided as scripts – figure poses, material
     settings, animation data, etc.
   – Many 3rd party add-ons for DAZ Studio are available as scripts.
   – A Scripting language makes DAZ Studio very easy for the user
     to extend – only basic programming knowledge is required.




                                                                        27
Ease of Development




                      28
Ease of Development

• Qt provides a framework that makes new development
  for DAZ Studio relatively easy.
• New engineers, and even interns, have been able to
  make meaningful contributions in a relatively short time.
• The DAZ Studio plug-in SDK, which is rooted heavily in
  Qt, makes it easy to extend DAZ Studio with new
  functionality.
• A number of 3rd party plug-in developers have expressed
  that DAZ Studio is one of the easiest applications they’ve
  developed for – in part due to Qt.



                                                               29
Ease of Development


• Open Source benefits
  – In Qt 3, DAZ Studio plug-in developers were required
    to license the Qt framework.
  – This was cost-prohibitive to many.
  – In Qt 4.5, the addition of LGPL licensing enabled us
    to make the DAZ Studio SDK freely available, and
    has generated a lot of new interest.
  – There is no barrier to entry except knowledge.
  – This creates a rich and productive add-on community.



                                                           30
Ease of Development


•   Recently, we developed 64-bit versions of DAZ Studio and Carrara
    for Windows and Mac OS X.
•   The move to 64-bit for DAZ Studio was very smooth, thanks in large
    part to Qt.
•   The move to 64-bit for Carrara was more problematic.
•   On Mac OS X, the 64-bit move required us to change from using
    Apple’s Carbon framework to the new Cocoa framework.
•   After researching the required changes, it was decided to move to
    Qt instead, which can handle the Cocoa interface for us.
•   The application event loop and window system were moved onto Qt,
    and a 64-bit version of Carrara for OS X was running in less time
    than if we had made the change to Cocoa ourselves.




                                                                         31
Qt 3 to Qt 4




               32
Qt 3 to Qt 4


• With all of our style customization and heavy use
  of scripting, porting from Qt 3 to Qt 4 was a
  worst-case-scenario.
• The qt3to4 utility gave us a good starting point
• Problem areas
  – Styles
  – Changes in widget and layout behavior
  – Scripting




                                                      33
Qt 3 to Qt 4


• QStyle changes were very problematic, and
  documentation was sometimes incomplete.
   – Access to the source code was very valuable.
   – We could examine exactly how different style aspects are
     handled and adjust accordingly.
• Qt3Support library is very useful, but some widgets and
  layouts still don’t behave quite the same.
   – Switching to Qt 4 counterparts was mostly straightforward.
• Moving from QSA to QtScript was very challenging.
   – Again, having source code was invaluable.
   – We were able to write a syntax translation tool that can
     automatically convert most of our QSA scripts to working
     QtScripts.


                                                                  34
Qt 3 to Qt 4


• What did we get with Qt 4?
  – Improved UI behavior and stability
  – Qt Style Sheets
  – Model-View type item views
  – Mac Cocoa support – important for 64-bit version
  – Script debugger
  – Scripts are now fully ECMAScript compatible
  – WebKit and other networking improvements for
    interactivity with our online store
  – LGPL licensing allowing us to distribute a free SDK

                                                          35
Conclusions

• Qt is an invaluable tool in the development of
  DAZ Studio.
• Qt gives us the flexibility to create an application
  with a flair and style all its own.
• Qt enables us to ignore many technical details
  and focus on building a better app.
• Qt helps us reduce development costs and
  decrease time-to-market.



                                                         36

More Related Content

What's hot

Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CE
account inactive
 
Meet Qt Canada
Meet Qt CanadaMeet Qt Canada
Meet Qt Canada
Qt
 
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Andreas Jakl
 
Qt 6.2 lts vs. qt 5.15 the big feature parity comparison
Qt 6.2 lts vs. qt 5.15 the big feature parity comparisonQt 6.2 lts vs. qt 5.15 the big feature parity comparison
Qt 6.2 lts vs. qt 5.15 the big feature parity comparison
Qt
 
Qt for beginners part 5 ask the experts
Qt for beginners part 5   ask the expertsQt for beginners part 5   ask the experts
Qt for beginners part 5 ask the experts
ICS
 
Introduction to Qt Creator
Introduction to Qt CreatorIntroduction to Qt Creator
Introduction to Qt Creator
Qt
 
Intro to gui, cross platform and qt
Intro to gui, cross platform and qtIntro to gui, cross platform and qt
Intro to gui, cross platform and qt
Muhammad Sabry
 
Targeting Android with Qt
Targeting Android with QtTargeting Android with Qt
Targeting Android with Qt
Espen Riskedal
 
了解 Qt
了解 Qt了解 Qt
了解 Qt
Chi Zhang
 
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with QtConvert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
ICS
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1rmitc
 
Meet Qt 6.2 LTS - Ask Us Anything!
Meet Qt 6.2 LTS - Ask Us Anything!Meet Qt 6.2 LTS - Ask Us Anything!
Meet Qt 6.2 LTS - Ask Us Anything!
Qt
 
Meet Qt 6.0
Meet Qt 6.0 Meet Qt 6.0
Meet Qt 6.0
Qt
 
qt-project.org and Qt 5
qt-project.org and Qt 5qt-project.org and Qt 5
qt-project.org and Qt 5
thiagomacieira
 
Migrating from Photon to Qt
Migrating from Photon to QtMigrating from Photon to Qt
Migrating from Photon to Qt
Janel Heilbrunn
 
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Nokia
 
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1   overview and key conceptsQt for beginners part 1   overview and key concepts
Qt for beginners part 1 overview and key concepts
ICS
 
KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phones
account inactive
 
Modern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qtModern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qt
Qt
 

What's hot (20)

Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CE
 
Meet Qt Canada
Meet Qt CanadaMeet Qt Canada
Meet Qt Canada
 
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
 
Qt 6.2 lts vs. qt 5.15 the big feature parity comparison
Qt 6.2 lts vs. qt 5.15 the big feature parity comparisonQt 6.2 lts vs. qt 5.15 the big feature parity comparison
Qt 6.2 lts vs. qt 5.15 the big feature parity comparison
 
Qt for beginners part 5 ask the experts
Qt for beginners part 5   ask the expertsQt for beginners part 5   ask the experts
Qt for beginners part 5 ask the experts
 
Introduction to Qt Creator
Introduction to Qt CreatorIntroduction to Qt Creator
Introduction to Qt Creator
 
Intro to gui, cross platform and qt
Intro to gui, cross platform and qtIntro to gui, cross platform and qt
Intro to gui, cross platform and qt
 
Targeting Android with Qt
Targeting Android with QtTargeting Android with Qt
Targeting Android with Qt
 
了解 Qt
了解 Qt了解 Qt
了解 Qt
 
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with QtConvert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1
 
Meet Qt 6.2 LTS - Ask Us Anything!
Meet Qt 6.2 LTS - Ask Us Anything!Meet Qt 6.2 LTS - Ask Us Anything!
Meet Qt 6.2 LTS - Ask Us Anything!
 
Qt quick (qml)
Qt quick (qml)Qt quick (qml)
Qt quick (qml)
 
Meet Qt 6.0
Meet Qt 6.0 Meet Qt 6.0
Meet Qt 6.0
 
qt-project.org and Qt 5
qt-project.org and Qt 5qt-project.org and Qt 5
qt-project.org and Qt 5
 
Migrating from Photon to Qt
Migrating from Photon to QtMigrating from Photon to Qt
Migrating from Photon to Qt
 
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
 
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1   overview and key conceptsQt for beginners part 1   overview and key concepts
Qt for beginners part 1 overview and key concepts
 
KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phones
 
Modern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qtModern microcontroller (mcu) application development with qt
Modern microcontroller (mcu) application development with qt
 

Viewers also liked

Efficient Graphics with Qt
Efficient Graphics with QtEfficient Graphics with Qt
Efficient Graphics with QtAriya Hidayat
 
Special Effects with Qt Graphics View
Special Effects with Qt Graphics ViewSpecial Effects with Qt Graphics View
Special Effects with Qt Graphics View
account inactive
 
Qt Widget In-Depth
Qt Widget In-DepthQt Widget In-Depth
Qt Widget In-Depth
account inactive
 
05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics
Andreas Jakl
 
The Future of Qt Widgets
The Future of Qt WidgetsThe Future of Qt Widgets
The Future of Qt Widgets
account inactive
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt Communication
Andreas Jakl
 
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7
Pasi Kellokoski
 
Qt for beginners part 2 widgets
Qt for beginners part 2   widgetsQt for beginners part 2   widgets
Qt for beginners part 2 widgets
ICS
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing more
ICS
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt Quick
ICS
 
Best Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part IIBest Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part II
ICS
 
Best Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part IIIBest Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part III
ICS
 
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
ICS
 
Best Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IVBest Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IV
ICS
 
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part I
ICS
 
Data Workflows for Machine Learning - Seattle DAML
Data Workflows for Machine Learning - Seattle DAMLData Workflows for Machine Learning - Seattle DAML
Data Workflows for Machine Learning - Seattle DAML
Paco Nathan
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
Natasha Murashev
 

Viewers also liked (18)

Efficient Graphics with Qt
Efficient Graphics with QtEfficient Graphics with Qt
Efficient Graphics with Qt
 
Special Effects with Qt Graphics View
Special Effects with Qt Graphics ViewSpecial Effects with Qt Graphics View
Special Effects with Qt Graphics View
 
Qt Widget In-Depth
Qt Widget In-DepthQt Widget In-Depth
Qt Widget In-Depth
 
05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics
 
Qt Animation
Qt AnimationQt Animation
Qt Animation
 
The Future of Qt Widgets
The Future of Qt WidgetsThe Future of Qt Widgets
The Future of Qt Widgets
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt Communication
 
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7
 
Qt for beginners part 2 widgets
Qt for beginners part 2   widgetsQt for beginners part 2   widgets
Qt for beginners part 2 widgets
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing more
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt Quick
 
Best Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part IIBest Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part II
 
Best Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part IIIBest Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part III
 
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
 
Best Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IVBest Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IV
 
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part I
 
Data Workflows for Machine Learning - Seattle DAML
Data Workflows for Machine Learning - Seattle DAMLData Workflows for Machine Learning - Seattle DAML
Data Workflows for Machine Learning - Seattle DAML
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
 

Similar to Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software

DevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile GamesDevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile Games
Andreas Katzig
 
Success Story and Future Challenges of Applying Qt for Embedded Linux
Success Story and Future Challenges of Applying Qt for Embedded LinuxSuccess Story and Future Challenges of Applying Qt for Embedded Linux
Success Story and Future Challenges of Applying Qt for Embedded Linux
account inactive
 
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Qualcomm Developer Network
 
Qt and the Red Flag Linux Distro
Qt and the Red Flag Linux DistroQt and the Red Flag Linux Distro
Qt and the Red Flag Linux Distro
account inactive
 
Developing Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesDeveloping Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/Kubernetes
Chakradhar Rao Jonagam
 
AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...
AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...
AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...
Amazon Web Services Korea
 
Tooling for the JavaScript Era
Tooling for the JavaScript EraTooling for the JavaScript Era
Tooling for the JavaScript Eramartinlippert
 
Project
ProjectProject
Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and Framework
Sandeep Adwankar
 
Dot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentalsDot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentals
Lalit Kale
 
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu vunvulea  building and testing windows 8 metro style applications using ...Radu vunvulea  building and testing windows 8 metro style applications using ...
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu Vunvulea
 
Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Frank Karlitschek
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General Session
Docker, Inc.
 
Docker Concepts for Oracle/MySQL DBAs and DevOps
Docker Concepts for Oracle/MySQL DBAs and DevOpsDocker Concepts for Oracle/MySQL DBAs and DevOps
Docker Concepts for Oracle/MySQL DBAs and DevOps
Zohar Elkayam
 
Docker for developers - The big picture
Docker for developers - The big pictureDocker for developers - The big picture
Docker for developers - The big picture
George Dyrrahitis
 
Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...
Jody Garnett
 
Matrix, The Year To Date, Ben Parsons, TADSummit 2018
Matrix, The Year To Date, Ben Parsons, TADSummit 2018Matrix, The Year To Date, Ben Parsons, TADSummit 2018
Matrix, The Year To Date, Ben Parsons, TADSummit 2018
Alan Quayle
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
GlobalLogic Ukraine
 
Nuxeo World Session: Becoming a Contributor: How to Get Started
Nuxeo World Session: Becoming a Contributor: How to Get StartedNuxeo World Session: Becoming a Contributor: How to Get Started
Nuxeo World Session: Becoming a Contributor: How to Get Started
Nuxeo
 
Moving microsoft .net applications one container at a time
 Moving microsoft .net applications one container at a time  Moving microsoft .net applications one container at a time
Moving microsoft .net applications one container at a time
Amazon Web Services
 

Similar to Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software (20)

DevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile GamesDevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile Games
 
Success Story and Future Challenges of Applying Qt for Embedded Linux
Success Story and Future Challenges of Applying Qt for Embedded LinuxSuccess Story and Future Challenges of Applying Qt for Embedded Linux
Success Story and Future Challenges of Applying Qt for Embedded Linux
 
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
 
Qt and the Red Flag Linux Distro
Qt and the Red Flag Linux DistroQt and the Red Flag Linux Distro
Qt and the Red Flag Linux Distro
 
Developing Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesDeveloping Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/Kubernetes
 
AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...
AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...
AWS Innovate: Moving Microsoft .Net applications one container at a time - Da...
 
Tooling for the JavaScript Era
Tooling for the JavaScript EraTooling for the JavaScript Era
Tooling for the JavaScript Era
 
Project
ProjectProject
Project
 
Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and Framework
 
Dot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentalsDot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentals
 
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu vunvulea  building and testing windows 8 metro style applications using ...Radu vunvulea  building and testing windows 8 metro style applications using ...
Radu vunvulea building and testing windows 8 metro style applications using ...
 
Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General Session
 
Docker Concepts for Oracle/MySQL DBAs and DevOps
Docker Concepts for Oracle/MySQL DBAs and DevOpsDocker Concepts for Oracle/MySQL DBAs and DevOps
Docker Concepts for Oracle/MySQL DBAs and DevOps
 
Docker for developers - The big picture
Docker for developers - The big pictureDocker for developers - The big picture
Docker for developers - The big picture
 
Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...
 
Matrix, The Year To Date, Ben Parsons, TADSummit 2018
Matrix, The Year To Date, Ben Parsons, TADSummit 2018Matrix, The Year To Date, Ben Parsons, TADSummit 2018
Matrix, The Year To Date, Ben Parsons, TADSummit 2018
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
Nuxeo World Session: Becoming a Contributor: How to Get Started
Nuxeo World Session: Becoming a Contributor: How to Get StartedNuxeo World Session: Becoming a Contributor: How to Get Started
Nuxeo World Session: Becoming a Contributor: How to Get Started
 
Moving microsoft .net applications one container at a time
 Moving microsoft .net applications one container at a time  Moving microsoft .net applications one container at a time
Moving microsoft .net applications one container at a time
 

More from account inactive

Shipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for SymbianShipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for Symbian
account inactive
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Application
account inactive
 
Developments in The Qt WebKit Integration
Developments in The Qt WebKit IntegrationDevelopments in The Qt WebKit Integration
Developments in The Qt WebKit Integration
account inactive
 
Qt Kwan-Do
Qt Kwan-DoQt Kwan-Do
Qt Kwan-Do
account inactive
 
Qt on Real Time Operating Systems
Qt on Real Time Operating SystemsQt on Real Time Operating Systems
Qt on Real Time Operating Systems
account inactive
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applications
account inactive
 
Qt Creator Bootcamp
Qt Creator BootcampQt Creator Bootcamp
Qt Creator Bootcamp
account inactive
 
Qt State Machine Framework
Qt State Machine FrameworkQt State Machine Framework
Qt State Machine Framework
account inactive
 
Mobile Development with Qt for Symbian
Mobile Development with Qt for SymbianMobile Development with Qt for Symbian
Mobile Development with Qt for Symbian
account inactive
 
Animation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIsAnimation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIs
account inactive
 
Using Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with QtUsing Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with Qt
account inactive
 
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
account inactive
 
The Mobility Project
The Mobility ProjectThe Mobility Project
The Mobility Project
account inactive
 
Copy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with QtCopy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with Qt
account inactive
 
The Next Generation Qt Item Views
The Next Generation Qt Item ViewsThe Next Generation Qt Item Views
The Next Generation Qt Item Views
account inactive
 
Qt Licensing Explained
Qt Licensing ExplainedQt Licensing Explained
Qt Licensing Explained
account inactive
 
Case Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded ProcessorsCase Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded Processors
account inactive
 
OGRE: Qt & OGRE for Multimedia Creation
OGRE: Qt & OGRE for Multimedia CreationOGRE: Qt & OGRE for Multimedia Creation
OGRE: Qt & OGRE for Multimedia Creation
account inactive
 
HGZ Kaffeemaschinen & Qt Speak Coffee
HGZ Kaffeemaschinen & Qt Speak CoffeeHGZ Kaffeemaschinen & Qt Speak Coffee
HGZ Kaffeemaschinen & Qt Speak Coffee
account inactive
 
Discover Qt Learning and Certification
Discover Qt Learning and CertificationDiscover Qt Learning and Certification
Discover Qt Learning and Certification
account inactive
 

More from account inactive (20)

Shipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for SymbianShipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for Symbian
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Application
 
Developments in The Qt WebKit Integration
Developments in The Qt WebKit IntegrationDevelopments in The Qt WebKit Integration
Developments in The Qt WebKit Integration
 
Qt Kwan-Do
Qt Kwan-DoQt Kwan-Do
Qt Kwan-Do
 
Qt on Real Time Operating Systems
Qt on Real Time Operating SystemsQt on Real Time Operating Systems
Qt on Real Time Operating Systems
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applications
 
Qt Creator Bootcamp
Qt Creator BootcampQt Creator Bootcamp
Qt Creator Bootcamp
 
Qt State Machine Framework
Qt State Machine FrameworkQt State Machine Framework
Qt State Machine Framework
 
Mobile Development with Qt for Symbian
Mobile Development with Qt for SymbianMobile Development with Qt for Symbian
Mobile Development with Qt for Symbian
 
Animation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIsAnimation Framework: A Step Towards Modern UIs
Animation Framework: A Step Towards Modern UIs
 
Using Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with QtUsing Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with Qt
 
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
 
The Mobility Project
The Mobility ProjectThe Mobility Project
The Mobility Project
 
Copy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with QtCopy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with Qt
 
The Next Generation Qt Item Views
The Next Generation Qt Item ViewsThe Next Generation Qt Item Views
The Next Generation Qt Item Views
 
Qt Licensing Explained
Qt Licensing ExplainedQt Licensing Explained
Qt Licensing Explained
 
Case Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded ProcessorsCase Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded Processors
 
OGRE: Qt & OGRE for Multimedia Creation
OGRE: Qt & OGRE for Multimedia CreationOGRE: Qt & OGRE for Multimedia Creation
OGRE: Qt & OGRE for Multimedia Creation
 
HGZ Kaffeemaschinen & Qt Speak Coffee
HGZ Kaffeemaschinen & Qt Speak CoffeeHGZ Kaffeemaschinen & Qt Speak Coffee
HGZ Kaffeemaschinen & Qt Speak Coffee
 
Discover Qt Learning and Certification
Discover Qt Learning and CertificationDiscover Qt Learning and Certification
Discover Qt Learning and Certification
 

Recently uploaded

Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 

Recently uploaded (20)

Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 

Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software

  • 1. DAZ Studio Advanced 3D Graphics Empowered by Qt
  • 2. DAZ 3D 1
  • 3. DAZ 3D • DAZ 3D – What we’re all about – “Unleash the Artist Within” • Bring 3D art to the masses. – High quality virtual 3D figures and content. – Innovative software which enables anyone to create artistic images. – A synergistic community which learns, shares, and grows together. 2
  • 4. DAZ 3D • History of DAZ 3D – DAZ 3D began as a division of the Zygote Media Group creating realistic virtual figures. – In December of 2000 it became an independent corporation and shortly after opened an online store for 3D figures and content at www.daz3d.com. – Since then it has grown to provide software applications which help users get the most out of their virtual content. 3
  • 6. DAZ Studio • In the beginning DAZ 3D had some great 3D figures and content, but relied on another company’s software to display this content. • We needed a way to showcase our content and remove our reliance on 3rd party applications. • DAZ Studio was born. 5
  • 7. DAZ Studio • DAZ Studio is a feature rich 3D figure modeling, posing, and animation tool. • It’s a vehicle for getting 3D content into the hands of users. – Get it into as many hands as possible. – It’s free! • It pushes 3D content to new heights with new ideas and innovations. 6
  • 8. DAZ Studio • Designing DAZ Studio – We needed an app with a unique and custom look. – We needed an application framework that would give quick and flexible results. – We needed Windows and Mac versions. – We needed a scriptable application. • Qt fit perfectly into our goals. 7
  • 9. DAZ Studio • Why Qt? – Versatility of interface components – Cross platform support – Ease of development – Integrated scripting capability • Since DAZ Studio’s inception in 2002 we’ve relied heavily on Qt, and it has been a huge benefit. 8
  • 11. UI Versatility • Some applications need to look native to a specific platform – Qt does this well. • With other applications, you often want a unique and eye-catching look. – Qt also does this well. • We want anyone who sees DAZ Studio to be drawn in and have to try it. • Here’s what we came up with: 10
  • 17. UI Versatility • Familiar widgets can still have unique style – Content pane using Model/View architecture • Completely new widgets are also easy to create – Puppeteer – innovative user interface for posing and shaping figures • OpenGL Widgets for real-time 3D displays 16
  • 19. UI Versatility • Styles – We wanted a way to easily change the whole look of the application through “skins” or styles. – This was before CSS styles were introduced in Qt4. – We created an XML based style system which controls how widgets are drawn. – The style defines a set of drawing commands for how each widget should be drawn depending on its current state. – Supports images and basic drawing operations. 18
  • 20. UI Versatility • Styles – Savvy users are able to create their own styles. – We’re able to mimic the look of other applications in our lineup, so users can have more familiar and consistent experiences. – Most of this would have been very difficult without the powerful styling framework that Qt already had. – We’re currently exploring Qt Style sheets and are excited for the possibilities they’ll provide. 19
  • 21. UI Versatility • Layouts – Not all users have the same work flow. – Qt provides the flexibility to create completely customizable window layouts. – Layouts can be arranged by the user and saved for later use. – Users can quickly switch between multiple layouts based on the tasks at hand. 20
  • 23. Cross Platform Support • Whether Windows, Mac OS X, Linux, or any other supported system, Qt makes it easy to support multiple platforms. • Design interface elements once, and they just work on other platforms. • No need to deal with often complicated setup for native windows, widgets, file IO, etc. • Spend less time worrying about details and more time getting stuff done. 22
  • 24. Cross Platform Support • Porting DAZ Studio to Mac was straightforward. – Initially DAZ Studio was developed on Windows. – Basic functionality was working in about 2 weeks. – It would not have been possible without Qt. – Most development is still done on Windows, without having to worry that it won’t work on Mac OS X. 23
  • 26. Scripting Support • Scripting support in an application is something that may not seem very useful at first, but it provides a lot of flexibility and power. – Gives the end user the ability to add the functionality that they need. – Allows for features that may not be fully known at the time of release. – Gives developers tools for prototyping and testing. • Qt makes it really easy to have full scripting capabilities. 25
  • 27. Scripting Support • A Scripting interface was an important design goal for DAZ Studio. • Originally we used the open-source SWIG toolkit to generate Python Bindings. • When QSA (Qt Script for Applications) was introduced for Qt 3, we were early adopters. • QSA made a scripting interface for DAZ Studio much easier to create and maintain. • The same classes that provide the plug-in SDK also provide the scripting interface. 26
  • 28. Scripting Support • In Qt 4, QSA has been replaced by QtScript. • QtScript is now a part of the core Qt framework and is more standards compliant. • Scripting provides many benefits to our users: – Many tasks in DAZ Studio have been automated with scripts – Content presets are provided as scripts – figure poses, material settings, animation data, etc. – Many 3rd party add-ons for DAZ Studio are available as scripts. – A Scripting language makes DAZ Studio very easy for the user to extend – only basic programming knowledge is required. 27
  • 30. Ease of Development • Qt provides a framework that makes new development for DAZ Studio relatively easy. • New engineers, and even interns, have been able to make meaningful contributions in a relatively short time. • The DAZ Studio plug-in SDK, which is rooted heavily in Qt, makes it easy to extend DAZ Studio with new functionality. • A number of 3rd party plug-in developers have expressed that DAZ Studio is one of the easiest applications they’ve developed for – in part due to Qt. 29
  • 31. Ease of Development • Open Source benefits – In Qt 3, DAZ Studio plug-in developers were required to license the Qt framework. – This was cost-prohibitive to many. – In Qt 4.5, the addition of LGPL licensing enabled us to make the DAZ Studio SDK freely available, and has generated a lot of new interest. – There is no barrier to entry except knowledge. – This creates a rich and productive add-on community. 30
  • 32. Ease of Development • Recently, we developed 64-bit versions of DAZ Studio and Carrara for Windows and Mac OS X. • The move to 64-bit for DAZ Studio was very smooth, thanks in large part to Qt. • The move to 64-bit for Carrara was more problematic. • On Mac OS X, the 64-bit move required us to change from using Apple’s Carbon framework to the new Cocoa framework. • After researching the required changes, it was decided to move to Qt instead, which can handle the Cocoa interface for us. • The application event loop and window system were moved onto Qt, and a 64-bit version of Carrara for OS X was running in less time than if we had made the change to Cocoa ourselves. 31
  • 33. Qt 3 to Qt 4 32
  • 34. Qt 3 to Qt 4 • With all of our style customization and heavy use of scripting, porting from Qt 3 to Qt 4 was a worst-case-scenario. • The qt3to4 utility gave us a good starting point • Problem areas – Styles – Changes in widget and layout behavior – Scripting 33
  • 35. Qt 3 to Qt 4 • QStyle changes were very problematic, and documentation was sometimes incomplete. – Access to the source code was very valuable. – We could examine exactly how different style aspects are handled and adjust accordingly. • Qt3Support library is very useful, but some widgets and layouts still don’t behave quite the same. – Switching to Qt 4 counterparts was mostly straightforward. • Moving from QSA to QtScript was very challenging. – Again, having source code was invaluable. – We were able to write a syntax translation tool that can automatically convert most of our QSA scripts to working QtScripts. 34
  • 36. Qt 3 to Qt 4 • What did we get with Qt 4? – Improved UI behavior and stability – Qt Style Sheets – Model-View type item views – Mac Cocoa support – important for 64-bit version – Script debugger – Scripts are now fully ECMAScript compatible – WebKit and other networking improvements for interactivity with our online store – LGPL licensing allowing us to distribute a free SDK 35
  • 37. Conclusions • Qt is an invaluable tool in the development of DAZ Studio. • Qt gives us the flexibility to create an application with a flair and style all its own. • Qt enables us to ignore many technical details and focus on building a better app. • Qt helps us reduce development costs and decrease time-to-market. 36