Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoMassimiliano Tucci Modificato 6 anni fa
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.