SlideShare a Scribd company logo
1 of 27
Download to read offline
Qt Mobile
    Sviluppo mobile con Python e Qt Framework

    7 Maggio 2010 @ PyCon 4
    Andrea Grandi



1
Agenda

• QtMobility
• MeeGo
• QtCreator 2
• PySide
• Generazione dei binding (Boost --> Shiboken)
• Stato del progetto
• Sviluppi futuri
• Come iniziare a sviluppare in Python e Qt per Maemo
• Esempi di codice con PySide
• Conclusioni



2
Qt Mobile




3
QtMobility

• Bearer Management
• Contacts
• Location
• Messaging
• Multimedia
• Publish and Subscribe
• Service Framework
• System Information
• Sensors
• Versit



4
QtMobility: Bearer Management

• Controlla lo stato di connettività
  del sistema
• Permette alle applicazioni di
  sapere quando una particolare
  connessione diventa disponibile
  e di redirezionare il traffico su
  di essa
• Restituisce informazioni
  dettagliate sulle connessioni
  configurate nel sistema e su
  quelle disponibili




5
QtMobility: Contacts

• Permette di accedere ai
  Contatti presenti sul dispositivo
• Le applicazioni possono
  utilizzare questa API per
  memorizzare un particolare tipo
  di informazione personalizzata
  all'interno di un contatto.
• Supporto per operazioni
  asincrone quando si accede ai
  contatti, per facilitare le
  applicazioni di sincronizzazione
  remota




6
QtMobility: Location

• Ottenere la posizione geografica corrente (tramite GPS, celle GSM
  ecc...)
• Trasmissione dell'aggiornamento della posizione
• Possibilità di notifica se ci si trova all'interno di una certa area
• Possibilità di accedere alle informazioni dettagliate sul segnale dei
  satelliti




7
QtMobility: Messaging

• Lettura ed invio di diversi tipi di messaggi: SMS, MMS, email …
• Possibilità di filtrare i messaggi e recuperarli in base a determinati
  parametri
• Accesso alle informazioni sugli account configurati nel dispositivo




8
QtMobility: Multimedia

• Riproduzione e registrazione di audio / video
• Supporto per radio FM
• Possibilità di riprodurre un file da una posizione remota (streaming
  audio / video)




9
QtMobility: Publish / Subscribe

• Sistema gerarchico di
  rappresentazione dei dati che è
  possibile condividere fra le
  varie applicazioni
• Possibilità di ricevere una
  notifica quando un dato viene
  modificato da un'altra
  applicazione




10
QtMobility: Service Framework

• I client possono scoprire quali servizi sono disponibili ed interagire
  con essi
• Permette di creare applicazioni che separino il client dal servizio
  stesso che offrono




11
QtMobility: System Information

• Permette di accedere alle informazioni di sistema e di essere
  notificati se avviene qualche cambiamento (stato della batteria,
  connettività, ecc...)
• Si possono creare applicazioni che si comportino in maniera
  differente a seconda dello stato di sistema. Prevedere ad esempio
  una modalità di risparmio della potenza della CPU nel caso il
  dispositivo stia funzionando a batteria o sia alimentato a corrente




12
QtMobility: Sensors

• Accesso ai sensori hardware (accelerometro ad esempio)
• Notifica del cambio di orientamento del dispositivo (landscape /
  portrait)
• Permette di scrivere applicazioni che reagiscano in maniera
  differente a seconda della posizione in cui si trova il dispositivo




13
QtMobility: Versit

• Permette di leggere e scrivere documenti vCard
• Esporta/importa da e verso QContacts e vCard




14
MeeGo

• Maemo e Moblin si fondono
• Una nuova distribuzione Linux
  pensata per netbook, palmari e
  smartphone
• UI basata sulle librerie Qt
• Sistema di pacchetti RPM
• Completamente opensource
• Supporto per Intel/Atom e ARM
• Disponibile dal secondo quarto
  del 2010




15
MeeGo: architettura




16
QtCreator 2

• IDE per lo sviluppo Qt
• Multi piattaforma (Windows,
  Linux, OSX)
• Supporta lo sviluppo di
  applicazioni per palmari,
  smartphone (Maemo/MeeGo,
  Symbian)
• Emulatore Maemo e Symbian
  integrato
• Supporta al momento solo C++
  (in futuro anche Python)
• Integrazione con QtQuick (Qt
  User Interface Creation Kit)

17
QtQuick




18
PySide

• Bindings ufficiali di Nokia per le librerie Qt
• Sviluppato e mantenuto da OpenBossa
• Licenza LGPL
• Pensato per Maemo (MeeGo) ma senza escludere le altre
  piattaforme (Windows, Linux, OSX).




19
Generazione dei bindings

• Inizialmente generati tramite Boost
     • Serviva un metodo veloce per iniziare
     • I binding generati erano troppo grandi
     • Prestazioni inferiori a PyQt

• Passaggio a Shiboken
     • Possibilità di generare binding per qualsiasi libreria C++
     • Dimensione nettamente inferiore dei binding generati
     • Maggiore flessibilità di utilizzo
     • Gestire sia i binding PySide che il generatore stesso




20
Stato del progetto

• Moduli disponibili
     • QtCore
     • QtGui
     • QtNetwork
     • QtSvg
     • QtWebkit
     • QtTest
     • Phonon
     • QtHelp
     • QtScript
• Codice da ottimizzare (prestazioni e dimensioni)
• Completare il passaggio da Boost a Shiboken



21
Sviluppi futuri

• Ulteriore ottimizzazione per i dispositivi con meno risorse di calcolo
  (palmari, cellulari ecc...)
• Porting per OSX e Windows (ci sono volontari?)
• Integrazione con QtCreator
• Strumenti per iniziare a creare velocemente un binding
  (probabilmente un plugin per QtCreator)




22
Come iniziare

• Conoscenze di base
     • Python
     • Qt
     • Linee guida di Maemo (per la UI)

• Strumenti necessari
     • PC con Linux (per il momento)
     • Maemo SDK
     • PySide (non distribuito di default con l'SDK)




23
Domande Frequenti

• PySide supporta QtMobility?
• QtCreator avrà il supporto per Python e PySide?
• PySide è compatibile con PyQt a livello di API?
• QtUiTools è disponibile su PySide? In particolare è possibile
  disegnare la propria UI tramite QtDesigner ed utilizzarla da
  PySide?
• Perchè non si è scelto di utilizzare PyQt?
• PySide supporta solo Maemo o anche il nuovo Symbian?




24
Riferimenti

• Web
     • PySide: http://www.pyside.org
     • Maemo: http://www.maemo.org
     • MeeGo: http://www.meego.com
     • Qt: http://qt.nokia.com

• IRC
     • #pyside @ FreeNode
     • #maemo @ FreeNode
     • #meego @ FreeNode

• Andrea Grandi
     • a.grandi@gmail.com
     • http://www.andreagrandi.it
25
Develer: Qt Certified Partner




• 10 dipendenti certificati Qt
• Servizi di consulenza
• Sviluppo di soluzioni basate su tecnologia Qt



26
Grazie!




27

More Related Content

Viewers also liked

International Partnerships - Master of Distance Education & E-Learning
International Partnerships - Master of Distance Education & E-LearningInternational Partnerships - Master of Distance Education & E-Learning
International Partnerships - Master of Distance Education & E-Learning
Stella Porto
 
Participation Patterns in Formal, Non-Formal, and Informal Online Learning En...
Participation Patterns in Formal, Non-Formal, and Informal Online Learning En...Participation Patterns in Formal, Non-Formal, and Informal Online Learning En...
Participation Patterns in Formal, Non-Formal, and Informal Online Learning En...
Richard Schwier
 
GADLA Summer Event Introductions by Darrell Naylor-Johnson
GADLA Summer Event Introductions by Darrell Naylor-JohnsonGADLA Summer Event Introductions by Darrell Naylor-Johnson
GADLA Summer Event Introductions by Darrell Naylor-Johnson
Stella Porto
 

Viewers also liked (20)

Pets in the US
Pets in the USPets in the US
Pets in the US
 
Pacote De Biscoitosj
Pacote De BiscoitosjPacote De Biscoitosj
Pacote De Biscoitosj
 
ID as Social Process
ID as Social ProcessID as Social Process
ID as Social Process
 
Using social software in the MDE
Using social software in the MDEUsing social software in the MDE
Using social software in the MDE
 
International Partnerships - Master of Distance Education & E-Learning
International Partnerships - Master of Distance Education & E-LearningInternational Partnerships - Master of Distance Education & E-Learning
International Partnerships - Master of Distance Education & E-Learning
 
Mountain
MountainMountain
Mountain
 
중국대지진
중국대지진중국대지진
중국대지진
 
USDLA 2010 - S.Porto
USDLA 2010 - S.PortoUSDLA 2010 - S.Porto
USDLA 2010 - S.Porto
 
Gevangen in de Wolken (saMBO-ICT versie)
Gevangen in de Wolken   (saMBO-ICT versie)Gevangen in de Wolken   (saMBO-ICT versie)
Gevangen in de Wolken (saMBO-ICT versie)
 
What's the Deal with Open Standards and Open Source Software
What's the Deal with Open Standards and Open Source SoftwareWhat's the Deal with Open Standards and Open Source Software
What's the Deal with Open Standards and Open Source Software
 
IFWE'2010 - Circles of Discovery: Building and Sustaining e-Relationships a...
IFWE'2010 - Circles of Discovery: Building and Sustaining e-Relationships a...IFWE'2010 - Circles of Discovery: Building and Sustaining e-Relationships a...
IFWE'2010 - Circles of Discovery: Building and Sustaining e-Relationships a...
 
Participation Patterns in Formal, Non-Formal, and Informal Online Learning En...
Participation Patterns in Formal, Non-Formal, and Informal Online Learning En...Participation Patterns in Formal, Non-Formal, and Informal Online Learning En...
Participation Patterns in Formal, Non-Formal, and Informal Online Learning En...
 
Demands, roles and competencies of 21st century distance educators (SPorto at...
Demands, roles and competencies of 21st century distance educators (SPorto at...Demands, roles and competencies of 21st century distance educators (SPorto at...
Demands, roles and competencies of 21st century distance educators (SPorto at...
 
Managing Online Programs
Managing Online ProgramsManaging Online Programs
Managing Online Programs
 
Taller de creación literaria 2014
Taller de creación literaria 2014Taller de creación literaria 2014
Taller de creación literaria 2014
 
S.Porto Presentation at Annual EDEN Conference in Lisbon 2008
S.Porto Presentation at Annual EDEN Conference in Lisbon 2008S.Porto Presentation at Annual EDEN Conference in Lisbon 2008
S.Porto Presentation at Annual EDEN Conference in Lisbon 2008
 
IDBx: MOOCs on Social and Economic Development in LAC
IDBx: MOOCs on Social and Economic Development in LACIDBx: MOOCs on Social and Economic Development in LAC
IDBx: MOOCs on Social and Economic Development in LAC
 
Kaveri
KaveriKaveri
Kaveri
 
WBE 08 - VLC Comparison
WBE 08 - VLC ComparisonWBE 08 - VLC Comparison
WBE 08 - VLC Comparison
 
GADLA Summer Event Introductions by Darrell Naylor-Johnson
GADLA Summer Event Introductions by Darrell Naylor-JohnsonGADLA Summer Event Introductions by Darrell Naylor-Johnson
GADLA Summer Event Introductions by Darrell Naylor-Johnson
 

Similar to Qt Mobile: Sviluppo mobile con Python e Qt Framework

Internet of Things con .Net Micro Framework: un mondo di device interconnessi
Internet of Things con .Net Micro Framework: un mondo di device interconnessiInternet of Things con .Net Micro Framework: un mondo di device interconnessi
Internet of Things con .Net Micro Framework: un mondo di device interconnessi
Whymca
 
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile MessagingWhymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
Whymca
 
Il futuro di Windows Phone
Il futuro di Windows PhoneIl futuro di Windows Phone
Il futuro di Windows Phone
Matteo Pagani
 

Similar to Qt Mobile: Sviluppo mobile con Python e Qt Framework (20)

Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele Gaggio
 
Mobile e Smart Client
Mobile e Smart ClientMobile e Smart Client
Mobile e Smart Client
 
Qt roadmap: the future of Qt
Qt roadmap: the future of QtQt roadmap: the future of Qt
Qt roadmap: the future of Qt
 
Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018Azure IoTHub - Roboval 2018
Azure IoTHub - Roboval 2018
 
Azure Bot Service with Node.js
Azure Bot Service with Node.jsAzure Bot Service with Node.js
Azure Bot Service with Node.js
 
Internet of Things con .Net Micro Framework: un mondo di device interconnessi
Internet of Things con .Net Micro Framework: un mondo di device interconnessiInternet of Things con .Net Micro Framework: un mondo di device interconnessi
Internet of Things con .Net Micro Framework: un mondo di device interconnessi
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
 
Realizzare Accessori iOS con Bluetooth Low Energy e Arduino
Realizzare Accessori iOS con Bluetooth Low Energy e ArduinoRealizzare Accessori iOS con Bluetooth Low Energy e Arduino
Realizzare Accessori iOS con Bluetooth Low Energy e Arduino
 
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile MessagingWhymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
Whymca Mobyt Strumenti Open Source Per Infrastrutture Dimobile Messaging
 
Il futuro di Windows Phone
Il futuro di Windows PhoneIl futuro di Windows Phone
Il futuro di Windows Phone
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
Da DotNet a DotNetCore
Da DotNet a DotNetCoreDa DotNet a DotNetCore
Da DotNet a DotNetCore
 
Qt Platform Abstraction
Qt Platform AbstractionQt Platform Abstraction
Qt Platform Abstraction
 
Creare un Information Radiator con Delphi
Creare un Information Radiator con DelphiCreare un Information Radiator con Delphi
Creare un Information Radiator con Delphi
 
Ubuntu Phone: the community smartphone
Ubuntu Phone: the community smartphoneUbuntu Phone: the community smartphone
Ubuntu Phone: the community smartphone
 
Che cosa è il Qt Framework
Che cosa è il Qt FrameworkChe cosa è il Qt Framework
Che cosa è il Qt Framework
 
A.rodolfi perugia 4.0
A.rodolfi perugia 4.0A.rodolfi perugia 4.0
A.rodolfi perugia 4.0
 
Ubuntu Touch: Sviluppo App e Convergenza
Ubuntu Touch: Sviluppo App e ConvergenzaUbuntu Touch: Sviluppo App e Convergenza
Ubuntu Touch: Sviluppo App e Convergenza
 
SIMarket_Massimo La Morgia
SIMarket_Massimo La MorgiaSIMarket_Massimo La Morgia
SIMarket_Massimo La Morgia
 

More from Andrea Grandi

More from Andrea Grandi (10)

Creating a custom Django Middleware
Creating a custom Django MiddlewareCreating a custom Django Middleware
Creating a custom Django Middleware
 
Presentazione Ubuntu Oneiric 11.10 - LinuxDay 2011
Presentazione Ubuntu Oneiric 11.10 - LinuxDay 2011Presentazione Ubuntu Oneiric 11.10 - LinuxDay 2011
Presentazione Ubuntu Oneiric 11.10 - LinuxDay 2011
 
Drupal - LinuxDay 2010 (Pistoia)
Drupal - LinuxDay 2010 (Pistoia)Drupal - LinuxDay 2010 (Pistoia)
Drupal - LinuxDay 2010 (Pistoia)
 
Drupal - LinuxDay 2010 (Pistoia)
Drupal - LinuxDay 2010 (Pistoia)Drupal - LinuxDay 2010 (Pistoia)
Drupal - LinuxDay 2010 (Pistoia)
 
Linux e il mondo della scuola - LinuxDay 2010 (Pistoia)
Linux e il mondo della scuola - LinuxDay 2010 (Pistoia)Linux e il mondo della scuola - LinuxDay 2010 (Pistoia)
Linux e il mondo della scuola - LinuxDay 2010 (Pistoia)
 
L'uso del VOIP in azienda (LinuxDay 2010 - Pistoia)
L'uso del VOIP in azienda (LinuxDay 2010 - Pistoia)L'uso del VOIP in azienda (LinuxDay 2010 - Pistoia)
L'uso del VOIP in azienda (LinuxDay 2010 - Pistoia)
 
Presentazione LinuxDay 2010 - Pistoia
Presentazione LinuxDay 2010 - PistoiaPresentazione LinuxDay 2010 - Pistoia
Presentazione LinuxDay 2010 - Pistoia
 
python-mafw intoduction at Maemo Summit 2009
python-mafw intoduction at Maemo Summit 2009python-mafw intoduction at Maemo Summit 2009
python-mafw intoduction at Maemo Summit 2009
 
Presentazione Festa Paas 2009
Presentazione Festa Paas 2009Presentazione Festa Paas 2009
Presentazione Festa Paas 2009
 
Conferenza Pymaemo
Conferenza PymaemoConferenza Pymaemo
Conferenza Pymaemo
 

Qt Mobile: Sviluppo mobile con Python e Qt Framework

  • 1. Qt Mobile Sviluppo mobile con Python e Qt Framework 7 Maggio 2010 @ PyCon 4 Andrea Grandi 1
  • 2. Agenda • QtMobility • MeeGo • QtCreator 2 • PySide • Generazione dei binding (Boost --> Shiboken) • Stato del progetto • Sviluppi futuri • Come iniziare a sviluppare in Python e Qt per Maemo • Esempi di codice con PySide • Conclusioni 2
  • 4. QtMobility • Bearer Management • Contacts • Location • Messaging • Multimedia • Publish and Subscribe • Service Framework • System Information • Sensors • Versit 4
  • 5. QtMobility: Bearer Management • Controlla lo stato di connettività del sistema • Permette alle applicazioni di sapere quando una particolare connessione diventa disponibile e di redirezionare il traffico su di essa • Restituisce informazioni dettagliate sulle connessioni configurate nel sistema e su quelle disponibili 5
  • 6. QtMobility: Contacts • Permette di accedere ai Contatti presenti sul dispositivo • Le applicazioni possono utilizzare questa API per memorizzare un particolare tipo di informazione personalizzata all'interno di un contatto. • Supporto per operazioni asincrone quando si accede ai contatti, per facilitare le applicazioni di sincronizzazione remota 6
  • 7. QtMobility: Location • Ottenere la posizione geografica corrente (tramite GPS, celle GSM ecc...) • Trasmissione dell'aggiornamento della posizione • Possibilità di notifica se ci si trova all'interno di una certa area • Possibilità di accedere alle informazioni dettagliate sul segnale dei satelliti 7
  • 8. QtMobility: Messaging • Lettura ed invio di diversi tipi di messaggi: SMS, MMS, email … • Possibilità di filtrare i messaggi e recuperarli in base a determinati parametri • Accesso alle informazioni sugli account configurati nel dispositivo 8
  • 9. QtMobility: Multimedia • Riproduzione e registrazione di audio / video • Supporto per radio FM • Possibilità di riprodurre un file da una posizione remota (streaming audio / video) 9
  • 10. QtMobility: Publish / Subscribe • Sistema gerarchico di rappresentazione dei dati che è possibile condividere fra le varie applicazioni • Possibilità di ricevere una notifica quando un dato viene modificato da un'altra applicazione 10
  • 11. QtMobility: Service Framework • I client possono scoprire quali servizi sono disponibili ed interagire con essi • Permette di creare applicazioni che separino il client dal servizio stesso che offrono 11
  • 12. QtMobility: System Information • Permette di accedere alle informazioni di sistema e di essere notificati se avviene qualche cambiamento (stato della batteria, connettività, ecc...) • Si possono creare applicazioni che si comportino in maniera differente a seconda dello stato di sistema. Prevedere ad esempio una modalità di risparmio della potenza della CPU nel caso il dispositivo stia funzionando a batteria o sia alimentato a corrente 12
  • 13. QtMobility: Sensors • Accesso ai sensori hardware (accelerometro ad esempio) • Notifica del cambio di orientamento del dispositivo (landscape / portrait) • Permette di scrivere applicazioni che reagiscano in maniera differente a seconda della posizione in cui si trova il dispositivo 13
  • 14. QtMobility: Versit • Permette di leggere e scrivere documenti vCard • Esporta/importa da e verso QContacts e vCard 14
  • 15. MeeGo • Maemo e Moblin si fondono • Una nuova distribuzione Linux pensata per netbook, palmari e smartphone • UI basata sulle librerie Qt • Sistema di pacchetti RPM • Completamente opensource • Supporto per Intel/Atom e ARM • Disponibile dal secondo quarto del 2010 15
  • 17. QtCreator 2 • IDE per lo sviluppo Qt • Multi piattaforma (Windows, Linux, OSX) • Supporta lo sviluppo di applicazioni per palmari, smartphone (Maemo/MeeGo, Symbian) • Emulatore Maemo e Symbian integrato • Supporta al momento solo C++ (in futuro anche Python) • Integrazione con QtQuick (Qt User Interface Creation Kit) 17
  • 19. PySide • Bindings ufficiali di Nokia per le librerie Qt • Sviluppato e mantenuto da OpenBossa • Licenza LGPL • Pensato per Maemo (MeeGo) ma senza escludere le altre piattaforme (Windows, Linux, OSX). 19
  • 20. Generazione dei bindings • Inizialmente generati tramite Boost • Serviva un metodo veloce per iniziare • I binding generati erano troppo grandi • Prestazioni inferiori a PyQt • Passaggio a Shiboken • Possibilità di generare binding per qualsiasi libreria C++ • Dimensione nettamente inferiore dei binding generati • Maggiore flessibilità di utilizzo • Gestire sia i binding PySide che il generatore stesso 20
  • 21. Stato del progetto • Moduli disponibili • QtCore • QtGui • QtNetwork • QtSvg • QtWebkit • QtTest • Phonon • QtHelp • QtScript • Codice da ottimizzare (prestazioni e dimensioni) • Completare il passaggio da Boost a Shiboken 21
  • 22. Sviluppi futuri • Ulteriore ottimizzazione per i dispositivi con meno risorse di calcolo (palmari, cellulari ecc...) • Porting per OSX e Windows (ci sono volontari?) • Integrazione con QtCreator • Strumenti per iniziare a creare velocemente un binding (probabilmente un plugin per QtCreator) 22
  • 23. Come iniziare • Conoscenze di base • Python • Qt • Linee guida di Maemo (per la UI) • Strumenti necessari • PC con Linux (per il momento) • Maemo SDK • PySide (non distribuito di default con l'SDK) 23
  • 24. Domande Frequenti • PySide supporta QtMobility? • QtCreator avrà il supporto per Python e PySide? • PySide è compatibile con PyQt a livello di API? • QtUiTools è disponibile su PySide? In particolare è possibile disegnare la propria UI tramite QtDesigner ed utilizzarla da PySide? • Perchè non si è scelto di utilizzare PyQt? • PySide supporta solo Maemo o anche il nuovo Symbian? 24
  • 25. Riferimenti • Web • PySide: http://www.pyside.org • Maemo: http://www.maemo.org • MeeGo: http://www.meego.com • Qt: http://qt.nokia.com • IRC • #pyside @ FreeNode • #maemo @ FreeNode • #meego @ FreeNode • Andrea Grandi • a.grandi@gmail.com • http://www.andreagrandi.it 25
  • 26. Develer: Qt Certified Partner • 10 dipendenti certificati Qt • Servizi di consulenza • Sviluppo di soluzioni basate su tecnologia Qt 26