La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Qt by Examples LINUX DAY 2016 http://www.lugman.org https://www.qt.io/

Presentazioni simili


Presentazione sul tema: "Qt by Examples LINUX DAY 2016 http://www.lugman.org https://www.qt.io/"— Transcript della presentazione:

1 Qt by Examples LINUX DAY 2016

2 Qt by Examples Argomenti QT: Qualche Caratteristica... Installazione
QT Designer Creazione nuova applicazione C++ Aggiunta di un widget grafico e collegamento dei segnali Aggiunta di un oggetto non grafico come Timer, Server TCP, ecc Edit di un widget già esistente per funzioni come: Intercettare una KEY o una combinazione di tasti Drag&Drop nel programma e/o nel sistema operativo Creazione di un widget personalizzato Test del port del codice portato sotto Windows Link delle librerie in Linux e in Windows Esempio di un programma

3 QT: Qualche Caratteristica...
Qt by Examples QT: Qualche Caratteristica... Programmazione C++ Compilatore GCC a 32 o 64 bit sotto Linux Cygwin a 32 bit o VC++ sotto Windows Definibile per ogni progetto Utilizzo di molte macro di preprocessore per estenderne le funzioni Sistema SIGNAL→SLOT per la gestione degli eventi ( Signal/Slot vs Callbacks, Versatilià vs Velocità Single signal → Multiple Slots Elaborazione immediata e interruttiva oppure accodabile degli Slots Notifica di chi ha emesso il segnale (ovvero ciò che da versatilità, ma che rallenta) IDE Grafico integrato: QT Designer Widget & Object già pronti e possibilità di crearne di nuovi

4 Applicazione per PC: QT Widget Application
Qt by Examples Applicazione per PC: QT Widget Application Nuovo → Qt Widget Application: Scegliere la directory e il nome dell'applicazione Scegliere compilatore e profilo (Debug o Release) Aggiungere i widget: Tree Widget → aggiunta degli item in modo fisso Text Edit: per uso successivo e come debug Push Button con il quale si ricostruirà il tree → collegare il segnale _on_click() Aggiungere le funzioni: Tree Widget → Drag&Drop di default Push Button per costruire il nuovo tree

5 Applicazione per PC: QT Widget Application
Qt by Examples Applicazione per PC: QT Widget Application Test 1: Mostra come inserire un TreeWidget Creare gli item manualmente: si nota subito la struttura a tabella che è di fatto la stessa di un TableWidget. Ogni item ha una struttura ad array per riempire i vari campi della tabella, mentre ha una struttura a lista per riempire le sotto colonne. Abilitare i Drag&Drop del TreeWidget: il drag funziona solo con se stesso ora! Test 2: Creazione automatica del tree e dei sub-tree QTreeWidgetItem *item = new QtreeWidgetItem() crea l'item che andrà poi configurato QTreeWidgetItem *item = new QtreeWidgetItem(item) crea un'altro item che è però un sotto-item del precedente. QfileDialog::getExistingDirectory() permette di scegliere la directory richiamando il form dal sistema operativo

6 reimplementando la classe TreeWidget
Qt by Examples Drag&Drop Il Drag&Drop viene abilitato su quasi tutti i Widget tramite l'interfaccia grafica. Le opzioni sono: dragEnable, dragDropOverwriteMode e dragDropMode. Viene poi definita l'azione di default a fronte di un drop (defaultDropAction) Per il TreeWidget, il D&D funziona solo su se stesso, mentre per l'editText è già abilitato e funziona anche tra programmi differenti Ma se si vuole che il D&D del TreeWidget porti con se informazioni “leggibili” anche da altre finestre o programmi, come fare per estendere queste funzionalità? reimplementando la classe TreeWidget

7 Reimplentare TreeWeedget per Drag&Drop
Qt by Examples Reimplentare TreeWeedget per Drag&Drop Creare un nuovo file C++ e un file Header con la classe myTreeWidget: per farlo si può inserire una classe che direttamente compilerà il templete con tutte le classi da ereditare Definire nel file header le funzioni di Drag&Drop da reimplementare che sono già definite come virtuali. Il QTreeWidget verrà poi “promosso” a myTreeWidget

8 Reimplentare TreeWeedget per Drag&Drop
Qt by Examples Reimplentare TreeWeedget per Drag&Drop È sufficiente reimplementare solo mousePressEvent per mantenere la massima prestazione. Come esempio in un caso viene copiato solo il testo, mentre nell'altro viene copiata l'icona

9 QWidget vs. QGraphicScene
Qt by Examples Custom Widget QWidget vs. QGraphicScene QGraphicScene viene normalmente utilizzato quando occorre creare e manipolare molti oggetti 2D. Se occorre gestire pochi e semplici “rettangoli”, QWidget risulta più semplice in quanto di solito basta solo gestire i Paint Event. Nell'esempio vedremo come: Inserire nella UI un widget generico Reimplementare la classe QWidget in particolare: paintEvent(QPaintEvent *) gestisce l'evento di ridisegno keyPressEvent(QKeyEvent *event) gestisce gli eventi da tastiera NOTA: perché gli eventi da tastiera o dal mouse vengano intercettati, occorre settare il widget perché possa accettare il focus. La via più semplice è settarlo via Designer


Scaricare ppt "Qt by Examples LINUX DAY 2016 http://www.lugman.org https://www.qt.io/"

Presentazioni simili


Annunci Google