Comprehensive presentation about Qt with special focus on Symbian. Close to a training material so if you wanna know what Qt is, have a look at the ~150 slides.
Held in www.see2009.org/ 27.10.2009
Shipping Mobile Applications Using Qt for Symbianaccount inactive
Presentation by Espen Riskedal held during Bossa Conference 2010 in Manaus.
Read more at http://labs.trolltech.com/blogs/2010/03/08/hi-from-bossa-conference-and-bossatetrix/
http://qt.nokia.com
http://www.bossaconference.indt.org/
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Nokia
Qt now and in the future - overview of Qt and the plans for Nokia platforms. Newest features of Qt including animation framework, gestures etc. Qt for Symbian and Maemo. Qt Mobility APIs. Hybrid Applications.
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...Andreas Jakl
Complete instructions on how to set up your development environment to develop using Qt and deploy with one click to Windows, Symbian, Maemo / MeeGo and the Qt Simulator. Based on the Nokia Qt SDK Beta.
Qt App Development for Symbian & MeeGo - v3.4.6 (17. January 2012)Andreas Jakl
Learn what Qt is all about, why it is important and what you can do with it! Includes an introduction to the Qt SDK, Qt Quick and the Qt Mobility APIs for development on Symbian and MeeGo Harmattan. Links to further resources help you to get an easy start!
Introduction to Qt cross-platform application and UI framework. Explaining what Qt does, some historical background, hybrid Internet Applications with Qt Webkit and the future with Qt Quick.
KDE Plasma in your pocket.
Presentation by Alexis Menard held during Bossa Conference 2010 in Manaus.
Read more at http://labs.trolltech.com/blogs/2010/02/28/tokamak-4-the-kde-plasma-meeting/
http://qt.nokia.com
http://www.bossaconference.indt.org/
Shipping Mobile Applications Using Qt for Symbianaccount inactive
Presentation by Espen Riskedal held during Bossa Conference 2010 in Manaus.
Read more at http://labs.trolltech.com/blogs/2010/03/08/hi-from-bossa-conference-and-bossatetrix/
http://qt.nokia.com
http://www.bossaconference.indt.org/
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Nokia
Qt now and in the future - overview of Qt and the plans for Nokia platforms. Newest features of Qt including animation framework, gestures etc. Qt for Symbian and Maemo. Qt Mobility APIs. Hybrid Applications.
Quickstart: Qt for Windows, Symbian and Maemo / Meego v2.0.8 (January 10th, 2...Andreas Jakl
Complete instructions on how to set up your development environment to develop using Qt and deploy with one click to Windows, Symbian, Maemo / MeeGo and the Qt Simulator. Based on the Nokia Qt SDK Beta.
Qt App Development for Symbian & MeeGo - v3.4.6 (17. January 2012)Andreas Jakl
Learn what Qt is all about, why it is important and what you can do with it! Includes an introduction to the Qt SDK, Qt Quick and the Qt Mobility APIs for development on Symbian and MeeGo Harmattan. Links to further resources help you to get an easy start!
Introduction to Qt cross-platform application and UI framework. Explaining what Qt does, some historical background, hybrid Internet Applications with Qt Webkit and the future with Qt Quick.
KDE Plasma in your pocket.
Presentation by Alexis Menard held during Bossa Conference 2010 in Manaus.
Read more at http://labs.trolltech.com/blogs/2010/02/28/tokamak-4-the-kde-plasma-meeting/
http://qt.nokia.com
http://www.bossaconference.indt.org/
Presentation for stack over flow event in London 28.10.2009. Good event, over 500 guys and gals in the audience!
http://qt.nokia.com
http://stackoverflow.com/
Explains how to install Necessitas (Qt for Android), how to use it, and how to publish to the Android Market. Based on Necessitas 0.3 (3rd alpha)
Slides are from Qt Developer Days 2011 in San Fransisco
Nokia Qt SDK in action - Qt developer days 2010Nokia
Presentation for Qt developer days 2010 in Munich covering the details of using Nokia Qt SDK and publishing the applications to Ovi store. Focusing on Symbian but covering the current status of maemo. Explains the Ovi Store Symbian Signing Service.
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Andreas Jakl
How to create a cross-platform native app? What is Qt and which platforms does it support?
Get the latest information on the open source, C++ based framework that lets you target Android, iOS and Windows Phone - plus desktop and embedded platforms! Also contains info on contained UI technologies, the Qt dual-licensing model and the roadmap.
Nokia Developer Offering Update - presentation given by Forum Nokia at the N8 Launch event in London on August 3rd, 2010. An overview of the new Nokia Developer Experiences, new Forum Nokia website, and Qt SDK / Mobility.
Qt World Summit 2015 Talk by V-Play: How to Develop with Qt for Multiple Scre...FELGO SDK
A summarized version is available here:
http://v-play.net/?p=10928
*** Quick Summary ***
This session shows how to develop applications for multiple screen sizes, screen resolutions and form factors like phones, tablets and desktop PCs with Qt. We show how you can use the same code base, while having native-looking UIs across platforms like iOS and Android with Qt and V-Play Apps. This involves tips for responsive design with Qt and a comparison when to use Qt Quick and in which cases C++ is the better choice.
We cover dynamic image switching, content scaling and basic Qt Quick features like file selectors, Loader elements, Layouts, QML Singletons and property bindings and compare the use cases for each of them. In addition, we introduce a density-independent approach you can use to create Qt apps on different resolutions and screen densities.
This talk also explains which V-Play components you can use to increase your application downloads and user retention. And how to measure the success of your apps across platforms.
This presentation gives you a technical overview with code snippets and hands-on examples of the possibilities with Qt for multi-screen development. For a non-technical overview of this topic, we recommend the first part of this presentation in the Qt Technology Strategy Track.
*** Presentation Keywords ***
Qt, Qt Quick, QML, JavaScript, V-Play Game Engine, V-Play Apps, V-Play Qt 5 Plugins
Screen density, screen resolution, screen size
Density independence, density-independent pixels; pixel density
Dynamic image switching, dynamic image selection; Android: alternative bitmaps; retina display, retina images
High dpi screens
Multiple screen aspect ratios
Supporting Multiple Screens, Responsive Design (tablet layout, adaptive layout, adaptable layout, scalability)
Multiple resolutions
Content scaling, upscaling, adaptive scaling
User Retention, User-Generated Content, UGC, community building, V-Play Game Network, Gamification, Leaderboards, Achievements, Multiplayer, Chat, Push Notifications, Mobile Analytics
Qt 5 Plugins, V-Play Plugins, Qt Facebook Plugin, Qt Chartboost, Qt AdMob, Qt Flurry Analytics, Qt Push Notifications, Qt In-App Purchases
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows PhoneAndreas Jakl
How to create cross-platform mobile apps with HTML5 that integrate directly into the platform.
By combining several enterprise-class frameworks and tools, you can create apps that run on all mobile devices, developed in a central repository and tool.
In this presentation, you will learn how to create HTML5 apps with the Visual Studio Multi-Device Hybrid Apps plug-in. Apache Cordova is directly integrated and resposible for creating native apps for the mobile platforms.
WinJS can be used as a major UI framework that is now open source and works accross all platforms and browsers.
To check how you can integrate apps deeper with the native platforms, you will also see how to install and use a custom plug-in that enables Near Field Communication (NFC) on both Android and Windows Phone.
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170Qt
Automotive HMI solutions traditionally require complicated hardware and extensive architecture to accomplish every goal. In the world of microcontrollers (MCU), we can create dedicated systems to fit the requirements together with richer and snappier graphical user interfaces (GUIs). This reduces development time, cost and also distributes specialized parts of the system into separate hardware units.
Join us to start creating richer UIs with specialized parts of the system with a dual-core architecture.
We will cover:
- An introduction to Qt for MCUs, Qt Quick Ultralite runtime
- APIs to accelerate your next scalable HMI application
- Challenges creating vehicle solutions and why NXP i.MX RT1170 MCUs
- Rapid prototyping embedded GUIs on the hardware
- Distribution of system responsibilities between two cores
- Handling CAN bus on secondary core and passing the data between two cores.
Attendees will find the final dual-core architecture design using Qt for MCUs running on NXP i.MX RT1170 for optimized speed and power consumption. Take a sneak peek!
Speakers:
Aurindam Jana, Product Director, The Qt Company
Marcin Lisowski, C++/Embedded Software Engineer, Siili_Auto
Lars Knoll is responsible for Qt’s R&D organization with teams in Oslo, Berlin and Brisbane. Lars has had different roles in former Trolltech’s engineering organization, working his way up from software engineer to leading the engineering team in Oslo as Director before taking over the role as Director of Global R&D.
Lars has been an active member of the KDE community and the architect behind KDE's html rendering engine KHTML. KHTML has later been taken by Apple and used as foundation for their browser Safari and the WebKit open source project. Lars holds a PhD in physics from the University of Heidelberg. A German national, he lives with his family in Oslo.
Keynote held during Qt Developer Days 2009.
http://qt.nokia.com/developer/learning/elearning
QtWS15 Revolutionizing Automotive with QtJohan Thelin
The slides the presentation on Revolutionizing Automotive with Qt by Johan Thelin from Pelagicore. Originally presented at the Qt World Summit 2015 in Berlin.
The Story of Enlightenment, EFL, Tizen and WaylandRyo Jin
Carsten Haitzler (Rasterman) presented at FOSDEM 2016 about Enlightenment on Wayland. As part of that, with Samsung's Tizen environment using Enlightenment, they too are after Wayland as being the superior solution to X11.
Understanding Typing. Understanding Ruby.Justin Lin
- What is typing?
- Pros and cons of type declarations.
- What does quacking like a dock mean?
- Static Typing vs Unit Testing.
- Making us better at Ruby.
你可以在以下鏈結找到中文說明:
http://www.codedata.com.tw/social-coding/understanding-typing-understanding-ruby/
Presentation for stack over flow event in London 28.10.2009. Good event, over 500 guys and gals in the audience!
http://qt.nokia.com
http://stackoverflow.com/
Explains how to install Necessitas (Qt for Android), how to use it, and how to publish to the Android Market. Based on Necessitas 0.3 (3rd alpha)
Slides are from Qt Developer Days 2011 in San Fransisco
Nokia Qt SDK in action - Qt developer days 2010Nokia
Presentation for Qt developer days 2010 in Munich covering the details of using Nokia Qt SDK and publishing the applications to Ovi store. Focusing on Symbian but covering the current status of maemo. Explains the Ovi Store Symbian Signing Service.
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Andreas Jakl
How to create a cross-platform native app? What is Qt and which platforms does it support?
Get the latest information on the open source, C++ based framework that lets you target Android, iOS and Windows Phone - plus desktop and embedded platforms! Also contains info on contained UI technologies, the Qt dual-licensing model and the roadmap.
Nokia Developer Offering Update - presentation given by Forum Nokia at the N8 Launch event in London on August 3rd, 2010. An overview of the new Nokia Developer Experiences, new Forum Nokia website, and Qt SDK / Mobility.
Qt World Summit 2015 Talk by V-Play: How to Develop with Qt for Multiple Scre...FELGO SDK
A summarized version is available here:
http://v-play.net/?p=10928
*** Quick Summary ***
This session shows how to develop applications for multiple screen sizes, screen resolutions and form factors like phones, tablets and desktop PCs with Qt. We show how you can use the same code base, while having native-looking UIs across platforms like iOS and Android with Qt and V-Play Apps. This involves tips for responsive design with Qt and a comparison when to use Qt Quick and in which cases C++ is the better choice.
We cover dynamic image switching, content scaling and basic Qt Quick features like file selectors, Loader elements, Layouts, QML Singletons and property bindings and compare the use cases for each of them. In addition, we introduce a density-independent approach you can use to create Qt apps on different resolutions and screen densities.
This talk also explains which V-Play components you can use to increase your application downloads and user retention. And how to measure the success of your apps across platforms.
This presentation gives you a technical overview with code snippets and hands-on examples of the possibilities with Qt for multi-screen development. For a non-technical overview of this topic, we recommend the first part of this presentation in the Qt Technology Strategy Track.
*** Presentation Keywords ***
Qt, Qt Quick, QML, JavaScript, V-Play Game Engine, V-Play Apps, V-Play Qt 5 Plugins
Screen density, screen resolution, screen size
Density independence, density-independent pixels; pixel density
Dynamic image switching, dynamic image selection; Android: alternative bitmaps; retina display, retina images
High dpi screens
Multiple screen aspect ratios
Supporting Multiple Screens, Responsive Design (tablet layout, adaptive layout, adaptable layout, scalability)
Multiple resolutions
Content scaling, upscaling, adaptive scaling
User Retention, User-Generated Content, UGC, community building, V-Play Game Network, Gamification, Leaderboards, Achievements, Multiplayer, Chat, Push Notifications, Mobile Analytics
Qt 5 Plugins, V-Play Plugins, Qt Facebook Plugin, Qt Chartboost, Qt AdMob, Qt Flurry Analytics, Qt Push Notifications, Qt In-App Purchases
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows PhoneAndreas Jakl
How to create cross-platform mobile apps with HTML5 that integrate directly into the platform.
By combining several enterprise-class frameworks and tools, you can create apps that run on all mobile devices, developed in a central repository and tool.
In this presentation, you will learn how to create HTML5 apps with the Visual Studio Multi-Device Hybrid Apps plug-in. Apache Cordova is directly integrated and resposible for creating native apps for the mobile platforms.
WinJS can be used as a major UI framework that is now open source and works accross all platforms and browsers.
To check how you can integrate apps deeper with the native platforms, you will also see how to install and use a custom plug-in that enables Near Field Communication (NFC) on both Android and Windows Phone.
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170Qt
Automotive HMI solutions traditionally require complicated hardware and extensive architecture to accomplish every goal. In the world of microcontrollers (MCU), we can create dedicated systems to fit the requirements together with richer and snappier graphical user interfaces (GUIs). This reduces development time, cost and also distributes specialized parts of the system into separate hardware units.
Join us to start creating richer UIs with specialized parts of the system with a dual-core architecture.
We will cover:
- An introduction to Qt for MCUs, Qt Quick Ultralite runtime
- APIs to accelerate your next scalable HMI application
- Challenges creating vehicle solutions and why NXP i.MX RT1170 MCUs
- Rapid prototyping embedded GUIs on the hardware
- Distribution of system responsibilities between two cores
- Handling CAN bus on secondary core and passing the data between two cores.
Attendees will find the final dual-core architecture design using Qt for MCUs running on NXP i.MX RT1170 for optimized speed and power consumption. Take a sneak peek!
Speakers:
Aurindam Jana, Product Director, The Qt Company
Marcin Lisowski, C++/Embedded Software Engineer, Siili_Auto
Lars Knoll is responsible for Qt’s R&D organization with teams in Oslo, Berlin and Brisbane. Lars has had different roles in former Trolltech’s engineering organization, working his way up from software engineer to leading the engineering team in Oslo as Director before taking over the role as Director of Global R&D.
Lars has been an active member of the KDE community and the architect behind KDE's html rendering engine KHTML. KHTML has later been taken by Apple and used as foundation for their browser Safari and the WebKit open source project. Lars holds a PhD in physics from the University of Heidelberg. A German national, he lives with his family in Oslo.
Keynote held during Qt Developer Days 2009.
http://qt.nokia.com/developer/learning/elearning
QtWS15 Revolutionizing Automotive with QtJohan Thelin
The slides the presentation on Revolutionizing Automotive with Qt by Johan Thelin from Pelagicore. Originally presented at the Qt World Summit 2015 in Berlin.
The Story of Enlightenment, EFL, Tizen and WaylandRyo Jin
Carsten Haitzler (Rasterman) presented at FOSDEM 2016 about Enlightenment on Wayland. As part of that, with Samsung's Tizen environment using Enlightenment, they too are after Wayland as being the superior solution to X11.
Understanding Typing. Understanding Ruby.Justin Lin
- What is typing?
- Pros and cons of type declarations.
- What does quacking like a dock mean?
- Static Typing vs Unit Testing.
- Making us better at Ruby.
你可以在以下鏈結找到中文說明:
http://www.codedata.com.tw/social-coding/understanding-typing-understanding-ruby/
Most applications will need to communicate with other services or devices at some point, or at least save settings on the host computer. These concepts are covered in this module.
After introducing the generic concept behind devices, short examples show how to use files.
Afterwards, the module covers networking and its representation in Qt. In addition to providing classes for handling low level sockets, network managers simplify handling web service requests and responses like for the HTTP protocol. At the end, a short section explains the basics of different methods of parsing XML in Qt, including DOM trees, SAX, pull parsing and XQuery/XPath.
A section about internationalization demonstrates the process step-by-step, showing all required components to make your application multi-lingual.
Presentation on Qt Developer Frameworks for a more technical audience, including the changes in version 4.6 and support for Maemo and Symbian mobile platforms.
Performance is a key component of usability and crucial for the user experience, especially in today's modern user interfaces where graphical elements are being animated and transitioned. Bringing Qt Everywhere means a significant need for speed across desktop and embedded platforms. This presentation will give you a brief overview of performance improvements done in Qt, and will be highly interactive with hands-on sessions on how to squeeze every last drop of performance out of your Qt application.
Presentation by Bjørn Erik Nilsen held during Qt Developer Days 2009.
http://qt.nokia.com/whatsnew
NFC Development with Qt - v2.2.0 (5. November 2012)Andreas Jakl
Learn developing Near Field Communication (NFC) apps for Nokia's Symbian and MeeGo phones with step-by-step tutorials!
The three development options Qt, Symbian native and Java ME are outlined. A more detailed explanation shows the Qt Mobility 1.2 APIs to create modern NFC applications for smartphones.
In the final part, step-by-step hands-on tutorials walk you through developing your first two NFC apps. The first demo extends an example from the Qt SDK with reading & writing both URI and text NDEF records to create new sticky notes on the virtual corkboards visible on the screen. The second demo uses the LLCP protocol to create a peer-to-peer chat application between two NFC Forum compatible devices.
Software update for IoT Embedded World 2017Chris Simmonds
Many embedded Linux projects have a requirement to update the software on devices in the field. Recent security flaws in basic components such as OpenSSL and bash, combined with the interconnectedness of all things, have highlighted the problem and made it an absolute necessity
This presentation gives some superficial information on the mobile BeTrains application developed for devices supporting the Qt framework (Maemo, MeeGo, Symbian). Presentation given at the iRail meeting of february 2011.
Meego Italian Day 2011 – Andrea Grandi - Qt: l’infrastruttura di programmazione multipiattaforma.
Panoramica di Qt: libreria multipiattaforma per lo sviluppo di programmi con interfaccia grafica tramite l’uso di widget. Perchè usarla? Quali sono i vantaggi? Che linguaggio di programmazione utilizza? E sotto che licenza viene rilasciata? Insomma, tutto quello che abbiamo sempre voluto sapere su Qt, ma non abbiamo mai osato chiedere. Inoltre qualche nozione teorica su Qt Quick e QML.
Andrea Grandi è studente di Informatica presso l’Università di Firenze e ha lavorato per qualche anno come sviluppatore di software. Dal 2007 fa parte della community di Maemo, in cui si impegna attivamente per aiutare i nuovi utenti, organizzare eventi e sviluppare applicazioni; recentemente è stato eletto membro del Maemo Community Council. Ha iniziato da alcuni anni a lavorare con Qt/C++ per creare programmi destinati ai dispositivi Maemo sino ad accumulare un’esperienza tale da essere nominato Nokia Qt Ambassador. Inoltre è socio fondatore del Pistoia Linux User Group.
http://www.meegoit.com/2011
The long awaited port of Qt to the Symbian platform is set to be delivered later this year. In addition to being able to target a new platform, application developers will now be able to take advantage of new functionality in Qt to ensure their application integrates seamlessly with the underlying mobile operating system. This session features a brief introduction to the Symbian/S60 platform with a focus on mobile application development using Qt for the Symbian platform.
Presentation by Alessandro Portale held during Qt Developer Days 2009.
http://qt.nokia.com/developer/learning/elearning
My talk from the Nokia Developer Summit this year: Qt on Symbian^3. All you need to know to start developing for the Nokia N8 and other Symbian^3 devices using Qt.
<p>
[데브멘토 동영상] Meego for Intel Atom Processor and AppUp Center 2부 최종
<p>
이진용 Intel Korea 차장(Application Engineer)</p>
<p>
전LG전자 소프트웨어센터 책임연구원</p>
<p>
전PalmPalm Technology 신임연구원</p>
<p>
전Nexen 선임연구원</p>
<p>
중앙대학교 컴퓨터공학과 대학원 분산 및 운영체제 전공</p>
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Enhancing Performance with Globus and the Science DMZGlobus
ESnet has led the way in helping national facilities—and many other institutions in the research community—configure Science DMZs and troubleshoot network issues to maximize data transfer performance. In this talk we will present a summary of approaches and tips for getting the most out of your network infrastructure using Globus Connect Server.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
The Metaverse and AI: how can decision-makers harness the Metaverse for their...Jen Stirrup
The Metaverse is popularized in science fiction, and now it is becoming closer to being a part of our daily lives through the use of social media and shopping companies. How can businesses survive in a world where Artificial Intelligence is becoming the present as well as the future of technology, and how does the Metaverse fit into business strategy when futurist ideas are developing into reality at accelerated rates? How do we do this when our data isn't up to scratch? How can we move towards success with our data so we are set up for the Metaverse when it arrives?
How can you help your company evolve, adapt, and succeed using Artificial Intelligence and the Metaverse to stay ahead of the competition? What are the potential issues, complications, and benefits that these technologies could bring to us and our organizations? In this session, Jen Stirrup will explain how to start thinking about these technologies as an organisation.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
6. 2010 : Back to the track –
The Cross Platform Promise
Increase Total Commit to
Addressable Market Open Source
Combine the Best of Lower Entry Barriers
Both Worlds for Developers
6
6
8. Why Qt?
What is Qt about?
• QuickTime player? Programming language? A platform? Yet another runtime?
• A new Japanese car model?
Qt is Cross-platform application framework
• Differentiated user experience across hardware platforms
• Hybrid development: convergence of web and native applications
• Cross-platform software across desktops and mobile devices. Qt supports major
desktop OSs already and will extend it’s reach to Nokia platforms.
• Qt is not a runtime – no perf issues or sandbox restrictions. You can stand out with your
native development skills to fulfill the use cases offered by Qt.
• Qt Mobility APIs will bring in the easy to use APIs for mobile use cases.
Shorter time to market
• Productive APIs and comprehensive documentation with great examples
• Delivering functionality faster and maximizing efficiency by placing focus on innovation
• All the great tools offered free of charge - commercial services available as well
8
8
9. Today : Qt is used already used
everywhere!
From embedded devices By companies
to desktop applications from many industries
9
10. Qt: a cross-platform application and
UI development framework
http://qt.nokia.com
10
11. Nokia + Ovi Developer Story | 11
Simplified offering | Based on Qt
The future offering will be based on Qt, the development tool globally used to
build desktop apps – you may already know it.
With the simplified toolchain
you can tackle f.ex Maemo
and Symbian based devices
Develop on PC, Mac or Linux
11
12. Qt and Web is the way to go
Web
Web Runtime developers
For native
Qt UI Extensions
Developers
UI 85% of use
cases **
Qt
Engine
Mobile
Qt Mobility APIs
Features
Low level Native Native Native 15% of use
Native access
APIs APIs APIs cases **
Desktop
Symbian Linux
OSs
S60 on Symbian maemo
Platform Platform
* Internal SAPIs, not for 3rd parties
** Not based in any realiable statistics ;)
12
13. Qt on Symbian path
UI
Qt Qt
Qt
Qt
Engine
with
Mobility
Qt Mobility Qt Mobility
APIs rel 1 APIs
Mobile Rel 2
Features Symbian
C++
Symbian Symbian
Low level C++ Symbian
C++
Native access C++
Desktop
OSs
Nokia Symbian Symbian
S60 on Symbian S60 on Symbian
Platform Platform
13 2011
14. Qt Development Chain - maemo & Symbian
Distribution Ovi Store
Certification Symbian signed None - atleast yet…
IDEs •Qt Creator •Qt Creator
•Carbide
Common
offering
•Mobility APIS •Mobility APIs
SDKs
Qt for Symbian platform Qt for maemo platform
&
Plugins Symbian SDKs Maemo SDKs
Symbian Maemo
14
15. Maemo - Why should I care?
• Coming from desktop?
• The importance of mobile clients is widely recognized already – not gonna sell it here…
• With Qt and Mobility APIs you can easily extend your application to cover smartphone features
and utilize f.ex location, contacts, messaging etc.
• With maemo and Symbian you can reach more than 100 million devices with your Qt
application – already with Qt 4.6!
• Maemo is and will be very important for Nokia
– get a head start to maemo which we believe will be one of the most interesting platforms!
• With Ovi store you have a ready channel to sell your application to hundreds of millions
of users
15
16. Nov 2009 : get your Qt app running
on more than
+ 130 000 000 smartphones!
- Not to mention that Qt runs on all major
desktop OSs as well
16
19. What is Qt? (1/2)
• Qt (”cute”) is often referred to as a cross-platform GUI framework
• Cross-platform GUI has been the driving force
• Initially other modules did not even exist
• However, nowadays Qt is much more than a plain GUI FW
• Qt is a cross-platform C++ application development framework
• Set of cross-platform APIs and
• C++ class library
• Development tools
• Qt was originally designed for efficient creation of platform-independent desktop GUI
programs
• Developed by a Norwegian company called Trolltech, which has been part of Nokia since
2008
• Latest version is 4.6 (beta)
• Qt provides native look-and-feel in all platforms
• Implemented by relying on platform-specific APIs
• Platform specialities isolated
19
http://qt.nokia.com
20. Qt is supported in wide range of platforms
• Qt is currently ported to
• Desktops: Windows, Linux (X11), Mac
• Mobile: Windows CE, S60, and embedded Linux, e.g. Maemo
One and unified Cross-Platform API
Qt/Embedded
Qt/X11 Qt/Win Qt/Mac Qt/WinCE Qt/S60
Linux
20
21. Qt Application Framework
• Qt includes an intuitive C++ class library with a rich set of application build blocks
• Qt goes beyond C++ in the areas of inter-object communication and flexibility for advanced
GUI development.
• Combining the speed of C++ with the flexibility of the Qt Object Model Qt provides both
runtime efficiency and a high level of flexibility for GUI programming.
• Qt goes beyond C++ to add the following features:
• A very powerful mechanism for seamless object communication called signals and slots
• Queryable and designable object properties
• Powerful events and event filters
• Contextual string translation for internationalization
• Sophisticated interval driven timers that make it possible to elegantly integrate many tasks in
an event-driven GUI
• Hierarchical and queryable object trees that organize object ownership in a natural way
• Guarded pointers (QPointer) that are automatically set to 0 when the referenced object is
destroyed
• A dynamic cast that works across library boundaries
21
24. Qt for Symbian - Total Offering
• http://qt.nokia.com - main place for Qt related development material
• Qt for Symbian port – Qt 4.6 ported to S60 3rd Edition FP1 and FP2, 5th edition and also
coming S60 platform editions.
• Carbide.c++ 2.0.2 onwards supporting Qt development on Symbian.
• Note : Qt creator will also support Symbian development
• Fully integrated form editor (Qt Designer)
• Wizards for creating new Qt projects and classes
• Integrated .pro file editor
• Automated build setup for moc, uic, and rcc
• http://www.forum.nokia.com/Resources_and_Information/Tools/IDEs/Carbide.c++/
• Mobility APIs
• http://labs.qt.nokia.com/page/Projects/QtMobility
• And Their successor : Qt for S60 Mobile Extension
• High abstraction level APIs making it possible to use most important services without using native
Symbian C++
• Note : for a long time Qt developer will need Symbian APIs in specific use cases
• Documents, examples, discussion board, wiki, Technical support, consultancy etc
24
25. Qt for Symbian Developer’s
Library
• After installing the ’Qt for Symbian Developer’s
Library’ Carbide plugin you will see it in Carbide help
(select Help->Help Contents from Carbide menu bar)
• Note that the Qt Development User Guide that is
‘built-in’ with Carbide 2.0 is a separate library
• The developers library contains the following
sections
• Legal notice & Release notes
• Introduction to Qt
• Introduction to S60
• Installation guide
• Using Carbide.c++
• Qt for S60 guide
• Qt-related books and URLs
• Example ‘Qt for S60’ applications
25
http://library.forum.nokia.com/
26. ”smart installer” - Qt installer for Symbian
The opportunity The problem The solution
A Smart Installer tool that
+130M Symbian devices Qt libraries need to be
checks whether needed Qt
could run cross-platform Qt post installed – most
version is available on the
applications already during consumers might not
device – and if not, it will
this year bother
handle the installation
Details
•Nokia is working on a tool called Smart Installer for Symbian devices
•The expected availability is 1Q 2010
•A piece of code is to be packaged together with the Qt application targeted for Symbian devices (when
creating the .sis file)
•The Smart Installer will download OTA the needed Qt version to the handset if it is not already present
26
28. Tools – configure
• configure is a tool for configuring Qt itself for the current platform
• Compiles qmake
• Executed only during Qt installation
• Unless ready binaries are used (recommended)
• Configure is platform independent – not Symbian specific
qmake
Qt Source Code configure
Qt for
specific platform
28
29. Building Qt Applications
1. qmake –project
• Creates a Qt project file (.pro). This can also be created manually.
2. qmake
• Uses the .pro file as input and produces platform-specific Makefile(s)
• Generates make rules to invoke moc for project header files containing
Q_OBJECT – as explained later
3. make
• On Symbian make debug-winscw or make release-gcce
• Compiles the program for the current platform
• Executes also moc, uic and rcc
qmake Project Platform Application
qmake specific make
-project information Binary
file (.pro/.pri) Makefiles
29
31. What is Qt Creator?
Lightweight, cross-platform IDE for Qt
• Advanced C++ code editor
• Integrated, context sensitive help system
• Integrated visual debugger (based on gdb)
• Integrated source code management
• Project and build management tools
• Integrated Qt development tools
31
32. What does Qt Creator provide?
Lighting fast code Tailored to the needs Powerful C++
navigation tools of Qt cross-platform code editor
developers
32
33. Tailored to the needs of Qt
cross-platform developers
Challenge
• Qt is cross-platform, but IDEs/dev. environments are not
• Can be difficult to get up with a new framework
Solution
• True cross-platform development environment for Qt
• Integrated Qt-specific features (i.e. Signals & Slots)
• Debugger aware of Qt class structures
• New developers get productive sooner
Visualizing Qt class structures in Debug mode.
33
34. Powerful C++ code editor
Challenge
• Writing elegant, correct code can be time consuming
• Finding help often demands context switching
Solution
• Syntax highlighting and automatic code completion
• Static code checking as you type
• Context sensitive help
• Code folding Code completion.
• Parenthesis matching and parenthesis selection modes
• Advanced editing capabilities like block selection
Context-sensitive help.
34
35. Available as part of complete SDK
Qt SDK
Qt Development Tools
Qt Libraries Qt Designer Qt Assistant
Licensing Options:
GUI Layout & Help file/documentation
Forms Tool browser
Commercial
LGPL
Qt Linguist qmake
Translation/I18n Tool Cross-platform build tool
35
37. Qt Modules
• Cross-platform Qt consists of 12 modules
• A little bit less than 700 API classes, all modules depend on QtCore
• Additionally 3 platform specific modules: QAxContainer, QAxServer, QtDBus
• Build Tools
• Configure, Qmake, Moc, Uic and Rcc
• Development Tools
• Qt Creator, Qt Designer, Qt Assistant, Qt Linguist, Carbide
• Enables pure Qt applications, but
• Possibility to use platform APIs
• Possibility to embed native
elements, including UI widgets
QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
QtGui QtSql QtXml QtNetwork QtScript Phonon
QtCore
37
38. Qt for Symbian Platform - releases
FINAL
Beta based on
QtXmlPatterns QtOpenGL
Qt 4.6 October
Tower July-09 QtSql Phonon QtWebkit
based on 4.5
Garden P3-09 QtXml QtScript QtSvg
based on 4.5
Pyramid P10 QtGUI *) QtCore QtNetwork QtTest Q3Support
based on 4.4
http://pepper.troll.no/s60prereleases/
38
40. Qt – Modules (Core) QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
• Classes and methods for basic non-GUI functionality
QtGui QtSql QtXml QtNetwork QtScript Phonon
• Basic Type (Char, Date, Time, String) QtCore
• File system access, Date and time handling
• String handling, List and array handling
• Threads and processes, Shared resources
• Libraries and Plugins, Timers
• Classes and methods for basic graphical elements
• Point, Rectangle
• Heart of the Qt object model, QObject
• More information about Qt object model later on
• QtCore do not depend on underlying window system
40
41. QObject Class Role
• Heart of Qt's object model
• Base class for all object classes
• Provides object trees and object ownership
• QObject's responsibility is to provide a central location for the most important
concepts in Qt
• Has three major responsibilities
• Memory Management
• Introspection
• Event handling
41
42. Parent/Child Relationship
• Each QObject instance may take a parent (argument for constructor)
• Child informs its parent about its existence, upon which the parent
adds it to its own list of children
• If a widget object does not have a parent, it is a window
• The parent does the following for its children:
• Deletes them, when it is self deleted –
• But, of course, is not able to set your own direct pointers to those children to
NULL (if not using quarded pointers!
• Hides and shows children, when hidden/shown itself
• Enables and disables children when enabled or disabled itself
• Note that a child may be explicitly hidden, although the parent is
shown
42
43. Creating Objects
• Objects inheriting from QObject are allocated on the heap using new
• If a parent object is assigned, it takes ownership of the newly created
object – and eventually calls delete
• QLabel *label = new QLabel(”Some Text”, parent);
• Objects not inheriting QObject are allocated on the stack, not the heap
• QStringList list;
• QColor color;
• Exceptions
• QFile and QApplication (inheriting QObject) are usually allocated on the
stack
• Modal dialogs are often allocated on the stack, too
43
44. Memory Management
• The ownership of all child QObjects is transferred to the parent
• Automatic deletion by the parent
• Allocated from the heap with new
• Manual deletion won’t however cause double deletion because the child informs its
parent of the deletion
• All QObjects without a parent must be deleted manually
• Stack allocation is a good option to avoid problems
• Occasionally it may seem like Qt would hold some sort of automatic garbage
collection but this is not true!
• Always pay attention to ownerships and responsibilities!
44
45. Meta-Object System
• Meta-object system extends C++ with dynamic features – similar to those in
Java, for example
• Dynamic features include
• Mechanism to access any functions in the class
• Also private ones
• Used by signals and slots
• Class information
• Type without RTTI (Run-Time Type Information)
• Information about base classes
• Translate strings for internationalization
• Dynamic properties
45
46. Signals and Slots
• Observer pattern
• Type-safe callbacks
• More secure than callbacks, more flexible than virtual methods
• Many-to-many relationship
• Loose coupling between signals and slots
• Implemented in QObject
46
47. Signals
• A signal is a way to inform a possible observer that something of interest has happened
inside the observed class
• A QPushButton is clicked
• An asynchronous service handler is finished
• Value of QSlider is changed
• Signals are member functions that are automatically implemented in the meta-object
• Only the function declaration is provided by the developer
• Signal is sent, or emitted, using the keyword emit
• emit clicked();
• emit someSignal(7, “Hello”); //passing data in a connection
47
48. Slots
• A slot is a function that is to be executed when a signal has been emitted.
• (When QPushButton is pressed), close QDialog
• (When service is ready), ask for the value and store it
• (When QSLider value is changed), show a new value in QLCDNumber
• A Slot function is a normal member function implemented by the developer
48
49. Signal and Slot Implementation
class NewClass : public QObject
{
Q_OBJECT // Meta-object file needed
// Code convention recommends Q_OBJECT use always,
// otherwise qobject_cast fails
signals:
// Implementation in the meta-object
void newSignal(int myInt, QString myString);
public slots:
// Slots are implemented as normal member functions
void newSlot(int i, QString s);
}
49
52. Event Handling in Brief
• In Qt, events are objects that are delivered to event handling functions
• Base class QEvent, subclasses like QMouseEvent, QKeyEvent, QTimerEvent
• When an event occurs, Qt creates the event object and delivers the event to the
particular QObject
=> QObject::event( QEvent& e )
• Does not handle the event, redelivers to a corresponding virtual event handler
• Own virtual protected functions for different events
52
53. You Want to Have Your Widget to...
• Respond to key presses, implement:
void keyPressEvent(QKeyEvent&)
• Use timer, implement:
void timerEvent(QTimerEvent&)
QObject
• Respond to mouse presses, implement:
event
void mousePressEvent(QMouseEvent&) (QEvent&)
• React to layout changes, implement:
void resizeEvent(QResizeEvent&)
void moveEvent(QMoveEvent&) MySubClass
keyPressEvent
• Etc. (QKeyEvent&)
• Quite straightforward from the developer’s point
of view!
53
54. Timer Events
int QObject::startTimer ( int interval )
• Starts the timer, which will continuously send timer events at specified intervals
(ms)
• Returns the timer id
• Stops when QObject::killTimer(id) is called
• Class QTimer can also be used
• Both repetitive and single-shot timer events
• Emits signal timeout() when the timer expires
• A zero-millisecond QTimer can be used to perform low-priority background tasks –
compare to CIdle in S60/Symbian
54
55. Timers
• QTimer is a class for executing functions at a later time. You create an instance of a QTimer and connect the
signal timeout() to a slot containing the code you want to be executed.
• Call setSingleShot() for a single-shot timer.
• Finally, call start(int msec) on the timer to start it.
• For a one-time non-cancellable single-shot timer: QTimer::singleShot(1000, this, SLOT(doit()))
Example:
StopWatch::StopWatch( QWidget* parent ) : QLabel( parent )
{
QTimer* timer = new QTimer( this );
timer->start( 1000 );
connect( timer, SIGNAL( timeout() ),
this, SLOT( shot() ) );
}
void StopWatch::shot()
{
_secs += 1;
QString str;
str.sprintf("%d:%02d", _secs / 60, _secs % 60);
setText( str );
http://qt.nokia.com/4.5/timers.html
55
57. Qt GUI Classes
• Extends QtCore with GUI functionality QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
• UI application base class
• UI components : set of widgets and dialogs QtGui QtSql QtXml QtNetwork QtScript Phonon
• Widget layout management and classes for UI Events
QtCore
• All the UI components usually needed
• Not enough?
• Customized components can be done and integrated
with Qt Creator
• Provides rich set of GUI components
and supporting functionality
• Model-View-Controller (MVC) Item views
• Styles – ensuring native or custom look
and feel on target platforms
• Font-aware layout system
• Accessibility classes
• Canvas component with Widget support
57
58. QApplication
• Initializes application settings
• Palette, font
• Receives events from window system and dispatches them to widgets
• Defines application’s look and feel
• Provides localization of strings
• Knows application’s windows
• widgetAt()
• Use global qApp pointer to access QApplication instance
58
59. Windows
• Any widget is a window, unless it has a parent
• In addition, Qt has QMainWindow class
• Can be created with Qt Designer
Menu bar
Toolbars
Dock widgets
Central widget
Status bar
59
61. Toolbar
• Create actions in the same way as to menus
• Add actions to toolbars
QToolBar *fileToolBar;
fileToolBar = new QToolBar(MainWindow);
fileToolBar->setObjectName(
QString::fromUtf8("fileToolBar"));
fileToolBar->addAction(actionOpen);
61
63. Input & Selection Widgets
• Push buttons
• Selection buttons
• Text input
• Line input
• Plain text input
• Plain & rich text input
• Spin boxes
• Dial
• Scroll bars
• Sliders
63
64. Group & Layout Widgets
• Horizontal, vertical, grid layouts
• Tab widgets, group boxes, etc.
• Spacers
Qt Designer Result
64
65. Action Widgets
• QMainWindow
• Menus
• Menu items
• Inner menus
• Mapped to Options menu in S60 builds
• Tool bars
• Tool bar items
• Each menu or tool bar item is related to an Action (QAction)
• Text, icon
• Can be dragged from menu to toolbar
• Can be the same in both
65
66. Dialogs
• QInputDialog
• Lets users provide one-line input
• QMessageBox
• Displays message and icon to user
• QProgressDialog
• Displays progress of lengthy operations to user
• QDialog
• Base class for all dialogs
• QColorDialog
• QFileDialog
• QFontDialog
66
67. Geometry Mgmt with Layout managers
Classes used
QHBoxLayout, QVBoxLayout, QGridLayout, QStackedLayout
Each widget should be added to a layout manager
Layout managers may be nested
QWidget *top = new QWidget;
QLabel *nameLabel = new QLabel("Username:", top);
QLineEdit *nameEdit = new QLineEdit(top);
QLabel *passLabel = new QLabel("Password:", top);
QLineEdit *passEdit = new QLineEdit(top);
QVBoxLayout *vlay = new QVBoxLayout(top);
QHBoxLayout *nameLayout = new QHBoxLayout;
QHBoxLayout *passLayout = new QHBoxLayout;
vlay->addLayout(nameLayout);
vlay->addLayout(passLayout);
nameLayout->addWidget(nameLabel);
nameLayout->addWidget(nameEdit);
passLayout->addWidget(passLabel);
passLayout->addWidget(passEdit);
top->show();
67
69. Event Processing and Painting
• Painting takes place when QWidget::paintEvent() function call is received by
the application
• Two ways to request repaint (QWidget member functions)
• repaint() – causes immediate call to paintEvent()
• Avoid
• Use only in animations, where immediate repaint() needed
• update() – causes a repaint event to be queued
• Several update() calls are combined by Qt
• Does not cause flickering
69
70. Basic Drawing
QPainter QPaintEngine QPaintDevice
• QPainter performs drawing operations
• Specifies QPaintDevice instance to draw
• QPaintDevice is an abstraction of 2D space that can be painted on (such as
QBackingStoreDevice)
• Drawing can be done on instances of QWidget, QPrinter, QPixmap, QImage,
QPicture, QGLPixelBuffer, and QGLFrameBufferObject, in other words anything
inheriting QPaintDevice
70
71. QPainter
• Draw different shapes
• Polygon, rectangle, ellipse, pie, line, arc, text
• Specify pen width and style
• Solid, dash, dot
• Enable/disable antialiasing
• Set brush
• No brush, gradient color, texture
• Use transformations
• Translate, rotate, scale
• Save and restore drawing context
• QPainter settings
71
72. Added value to AVKON controls
• Gradient colors
• Transformations
• Timed transformations, i.e., animations
• Image composition
• Color transparency, 8-bit alpha channel
• Graphics view
• With graphic items
• With graphics widgets
72
73. Gradient Colors
• Linear – Color interpolation between start and end points
• Radial – Interpolation between focal and end points on a circle
• Pattern can be repeated or reflected outside the end point
• Conical – Counter-clockwise interpolation around a point
QPainter p(this);
QLinearGradient g(0, 0, 100, 100);
g.setColorAt(0.0, Qt::white);
g.setColorAt(1.0, Qt::blue);
p.setBrush(g);
p.drawRect(0, 0, 100, 100);
• Also easy to add repeats and reflections, e.g.:
QGradient::setSpread(QGradient::ReflectSpread);
73
76. Graphics View
• Provides a surface for managing and interacting with number of custom-made
2D graphical items
• Event propagation architecture provided
• Allows precise double-precision interaction capabilities for the items on the scene
• Items can handle key, mouse press, move, release and double click events
• Tracks mouse movement
• Uses Binary Space Partitioning tree to provide very fast item discovery
• Items may be widgets
• Fancy way to add transformations to the scene
• Automatic collision detection
• Main components
• Graphics Item
• Graphics Scene
• Graphics View
76
77. Graphics Scene – QGraphicsScene
• Container for item objects
• Provides a fast interface for managing a large number of items
• Propagates events to each item
• Manages item state (selection, focus)
QGraphicsScene scene;
QGraphicsItem *rect = scene.addRect(QRectF(0, 0, 100, 100));
scene.addItem(newGraphicsItem);
QGraphicsItem *item = scene.itemAt(50, 50);
// item == rect
78
78. Graphics View - QGraphicsView
• The view widget for displaying the contents of a QGraphicsScene
• One scene may display on one or more graphics views
• You can add a QGraphicsView directly from the UI Designer
• Like an empty canvas for your Graphics Items
• Convenient and efficient use of transformations
• Uses QMatrix or QTransform
• rotate()
• scale()
• translate()
• shear()
79
79. Graphics View Usage
• Create an instance of QGraphicsScene
• Create a view to the scene using QGraphicsView, and insert it like any other
widget into your layout
• Create QGraphicsItems to the scene
• For each item, set its position and other properties to your liking
• Add each item with scene->addItem(item);
• Optionally, create custom items by subclassing QGraphicsItem (or a subclass)
• As a minimum, you need to implement boundingRect() and paint(QPainter*,const
QStyleOptionGraphicsItem*,QWidget*)
80
80. Graphics View – QGraphicsItem
• Graphical item on the screen
• Several standard item classes exist: rectangle, ellipse, text
• Items live in their own local coordinate system.
• Coordinates are usually centered around its center point (0, 0), and this is also the
center for all transformations.
• Item features
• Mouse press, move, release, double click, mouse hover event, wheel event, context
menu events
• Keyboard input focus, key events
• Drag and drop
• Grouping
• Z-order
• Collision detection
• Set a shape for your items
• Override collision detection function if needed
81
81. Animations
• Single items can be animated by using a QGraphicsItemAnimation
• QGraphicsItemAnimation can animate an item by interpolating the items position and
transformation over a timeline
QGraphicsItem* myitem = ...;
QTimeLine* timeline = new QTimeLine(500);
timeline->setFrameRange(0,100);
QGraphicsItemAnimation* animation = new QGraphicsItemAnimation;
animation->setItem(myitem);
animation->setTimeLine(timeline);
animation->setPosAt(0.0,QPointF(0.0,0.0));
animation->setPosAt(0.5,QPointF(100.0,100.0));
animation->setPosAt(1.0,QPointF(0.0,50.0));
timeline->start();
82
82. Transformations
• View can transform scene’s co-ordinate system
• Implement slots, which implement the transformations
• Slots connected to widgets signals
• Easy to add transformations to graphic view items or to the whole view
QTransform transform;
transform.translate(50, 50);
transform.rotate(45);
transform.scale(0.5, 1.0);
view.setTransform(transform);
// Also available:
view.rotate(45);
83
84. Animation Framework – new in Qt 4.6
• Helps build highly animated, high-performance GUIs without
the hassle of managing complex structures, timers, and easing
curves or state graphs
• The framework makes it easy to animate any QObjects,
including QWidgets, by allowing Qt properties to be animated.
• Graphics views are not left out; one can animate
QGraphicsWidgets and new QGraphicsObjects which inherit
from QGraphicsItem (and thereby enable properties).
• Animations are controlled using easing curves and can be
grouped together.
• The API is easy to grasp with functions such as start(), stop(),
pause(), and currentTime().
• The animation framework also plugs into the new Qt
Statemachine by allowing an animation to be played when
transitions are triggered. The state machine framework is
introduced in 4.6
85
86. Qt – Modules (OpenGL)
• Offers classes that make it easy to use OpenGL in Qt applications
• Provides an OpenGL widget class that can be used just like any other Qt widget,
except that it opens an OpenGL display buffer where you can use the OpenGL
API to render the contents
• Implemented as a platform-independent Qt/C++ wrapper around the platform-
dependent GLX, WGL, or AGL C APIs
• The functionality provided is very similar to Mark Kilgard's GLUT library, but
with much more non-OpenGL-specific GUI functionality, i.e. the whole Qt API
QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
QtGui QtSql QtXml QtNetwork QtScript Phonon
QtCore
87
87. Qt Open GL/3D Classes
•OpenGL is a standard API for rendering 3D graphics
•Allows you to build your user interface in Qt, display and
manipulate 3D model in OpenGL®
•Integrates OpenGL canvas with Qt
•Provides frame buffer and pixel buffer abstraction
•Supports accelerating 2D painting with OpenGL
•Mix 2D painting and 3D scenes
88
89. Declarative UI Designer
• For programmers and designers
• expressive declaration language to allow describing how UI’s should look and behave instead of how they are constructed
• Create state-of-the-art, visually appealing user interfaces
• Utilizing declarative UI technology
• Supports both visual and code editing
• Target mobile/embedded and desktop
platforms
• Enabling transition and manipulation of individual component building blocks
• Expose Qt objects and properties to JavaScript
90
Public
91. Red Rectangle with QML
// grant access to basic elements
import Qt 4.6
• QML = Qt Modeling Language
• Inspired by Javascript
// a red rectangle
• Specify user interface declaratively
Rectangle {
• The “flow” of the application id: RedRectangle
• QGraphicsView and QtScript below width: 400
• Qt Creator support height: 200
color: "red"
}
92
92
92. Elements
A Text Element over
Traditional QPushButton an Image Element
Elements are
not restricted
93
93
94. Script
• An ECMAScript (Javascript) block can be the value of a
property inside QML
• Enables complex logic at QML level
• Enables more advanced binding
95
95
95. Declarative UI - what else will there be
• States
• Transitions
• Animations
• With bindings to Qt C++ you can get access all the mobile features you need!
96
97. Qt – Modules (Phonon) QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
• Multimedia framework for audio and video content
QtGui QtSql QtXml QtNetwork QtScript Phonon
• Support playback of the most common formats QtCore
• Media can be read from files or streamed over a network
• It is just FW, backend provide the actual functionality
• Windows: DirectX and DirectShow 9 or higher
• Linux: GStreamer
• Mac: QuickTime
• S60: MMF Phonon::VideoPlayer *player =
• Implementation in Qt for S60 beta
new Phonon::VideoPlayer(
• Based on three basic concepts Phonon::VideoCategory,
• Media objects parentWidget);
• Manages media sources player->play(url);
• Media control: start, stop, pause etc
• Sinks
• Outputs media (video rendering to widget, audio to sound card)
• Paths
• Used to connect media objects and sinks
• Enables media graphs
98
99. Qt Convenience Classes
• QMovie
• QMovie class is a convenience class for playing movies with QImageReader
• Incremental loading of animations or images
• QLabel::setMovie()
• QSound
• Access to the platform audio facilities
• Provides cross-platform sound support
• On Microsoft Windows, the underlying multimedia system is used
• Only the WAV format is supported for the sound files
• On X11, the Network Audio System is used if available, otherwise all operations work silently
• NAS supports WAV and AU files
• On the Macintosh, all QuickTime-supported formats are supported
• QVideoPlayer
100
101. Qt – Modules (Sql)
QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
• Provides database integration to Qt applications
• Divided to three layers
QtGui QtSql QtXml QtNetwork QtScript Phonon
1. UI Layer
• Provides classes to link the data from database to QtCore
data-aware widgets
• Designed to work with Qt's model/view framework
2. API layer
• Provides Qt’s abstracted database-independent SQL
API
3. Driver layer
• Provides low-level bridge between the specific QSqlDatabase db =
databases and the SQL API layer QSqlDatabase::database("sales");
• Uses driver plugins to communicate with the different QSqlQuery query
databases ("SELECT Lastname,
• Several drivers are supplied with Qt City FROM Names", db);
102
102. Connecting to a Database
• Choose driver(s) to use in the static method
QSqlDatabase::addDatabase(QString)
Driver type Description
QDB2 IBM DB2, v7.1 and higher
QIBASE Borland Interbase Driver
QMYSQL MySQL Driver
QOCI Oracle Call Interface Driver
QODBC ODBC Driver
QPSQL PostgreSQL v6.x and v7.x FDriver
QSQLITE SQLite version 3 or above
QSQLITE2 SQLite version 2
QTDS Sybase Adaptive Server
103
103. Connecting Example
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("bigblue");
db.setDatabaseName("flightdb");
db.setUserName("acarlson");
db.setPassword("1uTbSbAs");
bool ok = db.open();
if ( !ok )
qFatal() << "Error opening database: “ << db.lastError();
104
104. Invoking SQL Queries
• The class QSqlQuery can be used to run any SQL query
• This includes select statements, insert statement, and even statements for creating new
tables
• To run a query, create an instance of QSqlQuery, and run the exec() method specifying
the statement as a parameter:
QSqlQuery query;
if ( !query.exec( "SELECT name FROM
author" ) )
...
• An optional argument can be given to the constructor specifying which database to use
• Transaction support
• QSqlDatabase::transaction(), QSqlDatabase::commit(),
QSqlDatabase::rollback()
105
106. Qt – Modules (XML)
QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
•QtXml
• Provides C++ implementation of SAX and DOM QtGui QtSql QtXml QtNetwork QtScript Phonon
style XML parsers
• Provides a stream reader and writer for XML QtCore
documents
• XSLT support
•QtXmlPatterns QXmlStreamReader xml;
• XQuery support for Qt xml.addData( data );
while (!xml.atEnd())
• Simple SQL-like query language for traversing {
XML documents
xml.readNext(); ...
• Can select and aggregate XML elements of // do processing
interest and transform them for output as }
XML or in some other format
107
107. XML APIs
• Qt provides three different means of accessing XML data:
• SAX (version 2), which provides a sequential view on the data using call backs
• Stream Reader/Writer - also a sequential view, but control is in the app using a readNext()
method - makes it easier to write recursive decent parsers
• DOM (level 1 and 2), which provides a tree view on the data
• In order to use the XML support, add QT += xml to your QMake files
• Using SAX is easiest with QXmlDefaultHandler:
class MyHandler :public QXmlDefaultHandler { ... }
MyHandler handler;
QXmlSimpleReader reader;
reader.setContentHandler( &handler );
reader.setErrorHandler( &handler );
108
109. Qt – Modules (Network)
• Classes for writing TCP/IP clients and servers QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
• Makes network programming
easier and portable QtGui QtSql QtXml QtNetwork QtScript Phonon
• Support for QtCore
• Lower level protocols (TCP and UDP)
and higher level application protocols (FTP and HTTP)
• Seamless integration with progress widgets and any IO device
• Host Name resolving services and URL parsing, SSL support and much more
QHttp http;
connect(http, SIGNAL(done(bool)), this, SLOT(done(bool)));
http->get( “http://overtheair.org/amazingApi.jsp?action=doGreatThings”);
void MyClass::done(bool error)
{ QString data = http->readAll(); //handle data }
110
110. Networking
• Easy to use with high-level classes
• QHttp (QNetworkRequest, QNetworkAccessManager, QNetworkReply)
• In most cases, use WebKit directly
• QFtp
• QTcpServer
• QTcpSocket
• QUdpSocket
• QNetworkProxy added in Qt 4.5
• Add network module to your project file
• QT += network
111
111. Network Access
• QNetworkAccessManager
• Asynchronous API for sending and receiving data
• Intuitive API for put/post/get/head
• Modify or inspect headers in request and reply
connect(manager, finished(QNetworkReply*)),
this,SLOT(replyFinished(QNetworkReply*)));
QNetworkRequest req(QUrl(“http://host.com/foo”));
manager->get(req);
void replyFinished(QNetworkReply *reply)
{
//some checks to verify reply
QByteArray data = reply->readAll();
}
112
113. Qt – Modules (WebKit)
QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support
• Classes for displaying and editing Web
content
QtGui QtSql QtXml QtNetwork QtScript Phonon
• Web content can be enhanced with
native controls QtCore
• Based on open-source WebKit engine
• Ported to use Qt
• Rendering
• Text Handling
• Network Access
• Integrated part of WebKit project, uses
WebKit’s platform abstraction QWebView *view = new QWebView(parent);
view->load(QUrl("http://qt.nokia.com/"));
• Qt Style API to engine: view->show();
• QWebView, QWebPage and QWebFrame
114
114. Interact with Web Services
• QtWebKit allows
• Intuitive use of network resources
• Exposing QWidget to HTML and QObject to JavaScript
• Calling JavaScript from Qt and vice versa
JS
Qt
OS specific
APIs
115
115. QWebView and QWebPage classes
• QWebView inherited from QWidget QWebView
• Renders the content in QWebPage
• Easy to embed wherever widget could be used
QWebPage
• QWebPage provides access to the document structure in a page QWebFrame
• Frames
• Navigation history
• Undo/redo stack for editable content
• Each QWebpage has one QWebFrame object as its main frame
• HTML documents can be nested using frames
116
116. function setStatus() {
Javascript twit.updateStatus( statusupdate.text );
}
statusupdate.returnPressed.connect(this,setStatus);
QWebFrame *frame = view->currentFrame();
//You can inject JavaScript to be executed
frame->evaluateJavaScript(“myAmaging JS Stuff”);
//You can expose any QObject to the web view
MyQTwitter *twit = new MyQTwitter()
frame->addToJavaScriptWindowObject(“twit”,twit);
//do what ever you want with native APIs
//that you can call directly from Qt
CRRSensorApi::FindSensorsL(sensorList);
117
117. Exposing Widgets – 1(2)
• WebKit can place QWidget’s in the web environment
• Use HTML/script to control UI and infrastructure
• Two approaches
• Host widget inside web environment
• Expose object to script environment
• …or call script from C++ side
• Why would you want to do this?
• Simple updates (redeploy a script file)
• Easy to reuse web design for Look & Feel
• Easier interaction with web services
118
118. Exposing Widgets – 2(2)
• Place QWidget in web environment
• QWebPage::createPlugin()
• QWebPluginFactory
• <object type=“application/x-qt-plugin” classid=“MyNiceWidget” …>
QObject* createPlugin(const QString &classid, const QUrl &url,
const QStringList& paramNames, const QStringList ¶mValues )
{
if (classid==“MyNiceWidget”)
return new MyNiceWidget;
return 0;
}
119
119. Work with Exposed Objects
• QWebFrame::addToJavaScriptWindowObject
• QObjects expose metaobject information
• Properties can be read and altered
• Slots can be called
• Connect statements can be made
frame->addToJavaScriptWindowObject(“twit”,twit);
function setStatus() {
twit.updateStatus( statusupdate.text );
}
statusupdate.returnPressed.connect(this,setStatus);
120
120. Interoperating with JavaScript
• Each web frame has a JS context
• QWebFrame::evaluateJavaScript
QWebFrame *frame = view->currentFrame();
frame->evaluateJavaScript(…)
• Returns a variant
QVariant value = frame->evaluateJavaScript(“1+1;”);
// value.toInt() == 2;
121
121. Hybrid Development
Approachability of
Programming
Environment
Un
at Are
Easy
ta a
in
WRT
ab
• Hybrid applications combine easily approachable web
le
technologies and powerful and scalable Qt C++
• Qt already includes a rich selection of features for web and Difficult
Qt C++
Size of
hybrid development Project
Small Large
• QtWebKit module: embed web content from servers, local
files or application’s resources into Qt applications
• QtScript module: make Qt applications scriptable Hybrid Applications
• Both QtWebKit and QtScript provide a bridge between the Qt C++
Application
JavaScript execution environment and the Qt object model, to
allow for custom QObjects to be scripted. HTML, CSS,
JavaScript
• QtXMLPatterns module: shape and mash up XML date yielding
HTML output
• QNetworkAccessManager: interact with server side URL APIs Browser/ Standalone
Web runtime
Application *)
Services written in
Qt C++, Declarative
UI, Access to Qt
*) Planned future functionality
122
Public
122. Hybrid apps
• So you can run JS and HTML inside Qt application… What are the differences
when compared to a WRT widget?
WRT Widget running on top of webkit Qt application
Webkit QWebView running webkit
Widgets HTML,
CSS, Same HTML, CSS,
JavaScript JavaScript
Platform
Services
Native APIs Native APIs incl. Qt Mobility APIs
Platform
Services
implementation Platform
Services
implementation
123
123. Webview Demo
• Pure JS content run on top of Webkit
• Demonstrates different applications & look and feel
• BBC News
• News (Iphone style)
• Rock-Paper-Scissors
• Tic-Tac-Toe
• Calculator
• Bubble
• Statistics:
• 300 lines of C++ code (flick support ~200 lines)
• Size of .sis file: 20 kB
• Development time: approx. 5 hours
124
124. Key selling points in the hybrid approach
• No feature restrictions!
• Portable where ever Qt is available (which is everywhere - soon)
• Utilize web developer skills to make the apps
• Qt native skills to implement”platform services”
• Qt script generator http://labs.trolltech.com/page/Projects/QtScript/Generator
• Mixing native and HTML UI
• Interesting scenarious coming f.ex with Orbit widgets
• Tools might be problematic (migrating web tools and native (Qt Creator))
• We can make hybrid approach even for compelling by providing ready
framework where existing widgets can be plugged in
125
127. What is Qt for Symbian?
• Qt APIs have been implemented on top of OpenC/Symbian APIs
• The purpose is to have Qt programs running on the Symbian
platform
• Cross-platform applications
• There will be a separate library called Orbit (built on top of Qt
modules) which provides additional Symbian UI framework APIs in the
future
• Qt modules are compiled as Symbian DLLs and can be used in a
Symbian environment as is
• From the perspective of a developer, Qt can be considered as a set of
libraries to use for UI implementation, otherwise it’s just Symbian
development
128
128. Installing Qt for Symbian
• The Qt modules’ source code, installation guide and a Windows installer are
downloadable from
http://qt.nokia.com
• The Qt tools are compiled for Symbian platform
• The Qt modules are compiled using Symbian build tools
• As a result, a bunch of Qt*.dll and Qt*.lib files are produced into SDK emulator
folders (epoc32)
• For devices, pre-made .sisx files are provided
• Qt libraries can currently only be compiled for devices using the RVCT tool chain
129
129. Installing Qt 4.6 beta to the device
• Remember to have Symbian 3rd Edition FP1 or newer device
• Not sure what device you have? Check out from http://www.forum.nokia.com/devices/
• Install the following
• From Open C plugin (http://www.forum.nokia.com/openc)
• pips_s60_1_6_SS.sis: Pips 1.6
• In [Symbian_SDK]nokia_pluginopencs60opencsis
• openc_ssl_s60_1_6_SS.sis: Open C SSL 1.6
• In [Symbian_SDK]nokia_pluginopencs60opencsis
• STDCPP_s60_1_6_SS.sis: STDCPP 1.6
• In [Symbian_SDK] nokia_pluginopencpps60opencppsis
• qt_4_6_beta.sis: Qt for Symbian 4.6 beta
• The Qt libraries, In the folder where you installed Qt
• fluidlauncher.sis: Demo apps for Qt 4.6 beta
• Demo applications
• In the folder where you installed Qt, f.ex C:Qt4.6.0-beta
• Yes, in the final version we will have a simpler solution ;)
130
130. ”smart installer” - Qt installer for Symbian
The opportunity The problem The solution
A Smart Installer tool that
+130M Symbian devices Qt libraries need to be
checks whether needed Qt
could run cross-platform Qt post installed – most
version is available on the
applications already during consumers might not
device – and if not, it will
this year bother
handle the installation
Details
•Nokia is working on a tool called Smart Installer for Symbian devices
•The expected availability is 1Q 2010
•A piece of code is to be packaged together with the Qt application targeted for Symbian devices (when
creating the .sis file)
•The Smart Installer will download OTA the needed Qt version to the handset if it is not already present
131
131. Carbide.c++ 2.0
• Since version 2.0 all editions are free of charge
• Qt for Symbian support!
• New to Carbide? View the Getting Started with Carbide.c++
Express Screencast, which will take you through the basics
of creating, building, and deploying your first application.
• http://www.forum.nokia.com/info/sw.nokia.com/id/af80987a-
a72d-44cf-bf00-
1926be01058c/Carbide_cpp_Getting_Started_v1_1_en.exe.html
• Bug reports : Carbide Help menu, ”New Bug Report”
132
136. First Qt Program
#include <QtGui/QApplication>
#include <QtGui/QLabel>
int main(int argc, char* argv[])
{
QApplication hwApp(argc, argv);
QLabel hwLabel("Hello world");
// Widgets are not visible by default.
// Alternatives: showMaximized(), showFullScreen()
hwLabel.show();
return hwApp.exec();
}
137
137. qmake – example of .pro file Specifies for qmake that:
• application is based on Qt and
CONFIG += qt debug
• debug information is needed
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 { Platform specific conditions. This
SOURCES += hellowin.cpp mechanism will be used to specify
Symbian/S60 specific details, like
} required capabilities, UIDs etc.
unix {
SOURCES += hellounix.cpp
}
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
win32:debug {
CONFIG += console
}
138
138. Project File Structure
CONFIG += qt debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
SOURCES += hellowin.cpp
}
unix {
SOURCES += hellounix.cpp
}
Symbian {
SOURCES += hellosymbian.cpp
}
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
win32:debug {
CONFIG += console
}
• You may also use flags in your code
• Symbian features or changes flagged with Q_OS_SYMBIAN
• S60 dependencies with Q_WS_S60
139
139. Building Qt Application on Symbian
• In a normal Qt way for the Qt part:
• qmake –project
• qmake
• Component description file created (bld.inf)
• Project description file created (.mmp file)
• Extension Makefiles created
• Take care of executing moc, uic, rcc tools
• Integrated like mifconv to the toolchain
• Then, the actual compilation either with
• Generated platform specific Makefile: make debug-winscw
140
141. Platform Security
• Qt programs executed in processes with their own capabilities
• Just like native programs
• If a program accesses a protected Symbian/S60 API, it needs capabilities and/or
secure/vendor IDs
• Capabilities needed by native API calls easy to determine with Carbide.c++
capability scanner
• PlatSecDiagnostics can be used to determine capabilities needed by Qt library APIs
• Set PlatSecEnforcement OFF and diagnostics ON in the epoc32dataEPOC.INI file
• Read possible platform security violations from %TEMP%EPOCWIND.out
142
142. MMP File Definitions in a .pro Project File
• Everything you need in a Symbian OS MMP file, can be defined in the Qt .pro file
• Symbian-specific extensions should be defined inside a special block as shown
below
TARGET = HelloWorld // Not Symbian-specific
TEMPLATE = app // Not Symbian-specific
symbian*:{
// LIBS-keyword as such is not Symbian-specific, but bitgdi library is
LIBS += -lbitgdi
ICON = ./images/myIcon.svg
TARGET.UID2 = 0x100039CE
TARGET.UID3 = 0xA000017F
TARGET.SID = 0xA000017F
TARGET.VID = 0x70000001
TARGET.CAPABILITY = NetworkServices
// Qt app stack typically larger than 8kb
TARGET.EPOCSTACKSIZE = 0x5000
// Min 128Kb, Max 16Mb
TARGET.EPOCHEAPSIZE = “0x20000 0x1000000”
}
• This way the same .pro file would potentially work in other environments as
well
143
143. make command Command Description
make Creates abld and the project makefiles and builds debug
build of the application for the emulator (winscw
udeb).
• Running make command calls
bldmake and abld to build the Qt make debug Creates debug builds (winscw/gcce/armv5 udeb).
make debug-winscw Creates winscw debug build.
application for the S60 environment.
make debug-gcce Creates gcce debug build.
make debug-armv5 Creates armv5 debug build.
make release Creates release builds (gcce/armv5 urel).
make release-gcce Creates gcce release build.
make release-armv5 Creates armv5 release build.
make export Copies the exported files to their destination.
make cleanexport Removes files created with make export.
make mocclean Removes the header and source files created by the moc
tool.
make mocables Runs moc tool on necessary files.
make clean Removes everything built with abld target, exported files
and makefiles.
make distclean As make clean, but also removes all Symbian specific files
created with qmake.
make confclean As make distclean, but also cleans everything generated by
configure call. Note that this command is only available
in the Qt root directory.
make run Launches the application in the emulator.
145
144. Symbian Extensions to Project Files
• A Qt application on Symbian, is a Symbian application written in Qt running on S60 devices.
• All statements that are in a Symbian project defined in the mmp file are defined in the project file
when creating application with Qt in the S60 environment. Executing qmake overrides all
changes made manually to the mmp file.
• Trick : if you really need to have manual changes put the file as read only!
• Target type is specified using TEMPLATE and CONFIG variables in the .pro file.
• TEMPLATE = app value maps to target type EXE in MMP file,
• TEMPLATE = lib, CONFIG variable is used to distinguish between lib and dll target types.
• Name of application executable – use TARGET statement in .pro file (maps to TARGET in MMP file).
Example: TARGET = QtS60HelloWorld
• Symbian specific definitions in the project file should be separated from other definitions using a
Symbian keyword. Example:
symbian: {
TARGET.UID2 = 0x100039CE
TARGET.UID3 = 0xA000017F
}
146
145. Symbian Extensions to Project Files
• Some other examples of Symbian specific keywords:
• TARGET.SID = 0xA000017F
• TARGET.VID = 0x70000001
• TARGET.EPOCSTACKSIZE = 0x5000 // 20kb
• TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // Min 128kb, Max 16Mb
• TARGET.CAPABILITY = NetworkServices
• The DEFINES keyword can be used to add MACRO statements to the mmp file.
• QMAKE_CXXFLAGS can be used for setting compiler-specific options. The
keyword is followed by the specific compiler:
QMAKE_CXXFLAGS.CW += -O2
QMAKE_CXXFLAGS.ARMCC += -O0
147
146. Symbian extensions to project files
• RSS_RULES keyword for adding information to the _reg.rss file
• BLD_INF_RULES keyword for adding information to the bld.inf file
• Bunch of other extensions can be found in the Qt for S60 documentation – see
more in:
http://library.forum.nokia.com/topic/Qt_for_S60_Developers_Library/GUID-
97A34C6E-9F2B-4743-86F8-563362F7047A_cover.html
• And http://pepper.troll.no/s60prereleases/doc/qmake-variable-reference.html
148
147. Libraries
• Some libraries are automatically added to the mmp file when generating
the file. These libraries are:
• libc, libm, euser, libdl and QtCore,
• static library libcrt0 for QtCore applications,
• static library qtmain for QtGui applications,
• QtGui, avkon, eikcore, eiksrv, ws32, apparc, cone, eikcoctl, bafl and efsrv for QtGui
applicaitons.
• Qt libraries are added to the project file using the QT variable:
QT += network
• If other platform-specific libraries need to be added to the project, this can
be done by adding the LIBS variable to the project file with the appropriate
library name preceded with a ‘–l’ prefix:
LIBS += -lbitgdi –lfbscli
149
148. Platform Security cnt’d
• Qt programs executed in processes with their own capabilities
• Just like native programs
• If a program accesses a protected Symbian/S60 API, it needs capabilities and/or
secure/vendor IDs
• Capabilities needed by native API calls easy to determine with Carbide.c++
capability scanner
• PlatSecDiagnostics can be used to determine capabilities needed by Qt library APIs
• Set PlatSecEnforcement OFF and diagnostics ON in the epoc32dataEPOC.INI file
• Read possible platform security violations from %TEMP%EPOCWIND.out
150
152. Go nuts and mix Qt with Symbian APIs
• As Qt is not a runtime you can always use native apps to fill the gaps
• Mobility APIs progressing and removing the need for many cases
154
153. Exceptions/Leaves
• Isolate all leaving Symbian OS code from Qt code
• Trap all leaving functions and return error code to Qt
… or …
• Use the global conversion macros and functions provided by the Qt for
Symbian release
int PainterWrapper::ConstructPainter() {
TRAPD(error, activePainter = CActivePainter::NewL());
return error;
}
// …or something like…
HBufC* buf=0;
// this will throw a std::bad_alloc because we've asked for too much memory
QT_TRANSLATE_SYMBIAN_LEAVE_TO_EXCEPTION(buf = HBufC::NewL(100000000));
155
154. Separating Qt and Symbian implementations 1/2
• Symbian code should be separated from Qt code so that it can be replaced
with another platform-specific code when changing the platform. Private
implementation (aka pimpl) is an idiom that is used in Qt, and it can be
utilised to separate platform-specific code — different platforms have different
implementations of the private class. Binary compatibility can be retained with
this idiom.
• The idea of cross-platform implementation is to have the public interface of
the class the same for all platforms; the private implementation can then be
platform specific.
156
155. Separating Qt and Symbian implementations 2/2
• The main principles for private implementation are:
• The public class has to have a pointer to the private class
AOWrapper::AOWrapper(QObject *parent)
: QObject(parent)
{
d_ptr = new AOWrapperPrivate(this);
}
• The constructor of the private class creates a pointer to the public class passed as a parameter:
AOWrapperPrivate::AOWrapperPrivate(AOWrapper *wrapper)
: q_ptr(wrapper)
{
}
• The q_ptr pointer can be used to refer to the public class from the private class and the d_ptr pointer
can be used to refer to the private class from the public class.
• For examples of using the private implementation you can have a look f.ex at the Mobile Extensions
157
156. Private Implementation
• The problem: Maintaining Binary Compatibility
• Adding, removing or reordering members in public classes would break binary
compatibility
• Different implementations of the same class in different platforms
• Need a way to hide implementational details from the class header
• Private Implementation, P-IMPL, is a general design pattern providing a
solution for this problem
• Used throughout Qt with a few exceptions
• QColor, QModellndex, QMatrix, Q*Event
158
157. Private Implementation in General
// a.hh // a.hh // a.cpp
class A { struct D; struct D {
... int x;
private: class A { int y;
int x; ... };
int y; private: ...
}; D* d_ptr;
};
159
159. Qt and Active Objects
• Active scheduler is created when the S60 GUI Framework is initialized in
s60main
• Happens before main() in your Qt application is called
• How to use Qt and Active Objects:
• An example application exists:
http://www.forum.nokia.com/info/sw.nokia.com/id/63313e06-8fd7-4a68-8610-
80dd7ee22745/Qt_for_S60_Examples.html
• And also documentation:
http://www.forum.nokia.com/info/sw.nokia.com/id/c41e7898-2dd8-4f23-a629-
d27727519ffa/Qt_for_S60_Developers_Library.html
161
160. Separating Symbian specific
implementation
• When you need to write Symbian specific code use the following macro
#if defined(Q_OS_SYMBIAN)
#include <e32std.h>
#endif
• One good way to separate Symbian code is to have in in a separate DLL
(plugin)
162
161. Lucian – the floor is yours
• Please take it…
163
162. Part 6.
Closing
Please take my business card!
;)
164
163. We’ll be making it easy for you
• All you need is Qt creator – no SDKs ;)
• Integrated with Remote Device Access (RDA) - you don’t even need a device ;)
• http://www.forum.nokia.com/rda
• No promises here about dates or months yet…
Combine hybrid framework with this one
– isn’t it creepy how easy we can make it for you?
165
http://www.youtube.com/watch?v=TmFn90Zx2oo
164. Nokia + Ovi Developer Story | 167
Nokia native dev offering, redefined
1= Nokia cross-platform SDKs that you’ll love – with a
money back guarantee (as it’s free)
2= Ovi APIs. Amazing features in your apps – take
the Ovi social network to be a part of your
solution
3= Ovi Store. Sell your app to hundreds of millions
167