Strumenti Utente



indice

Creare un ambiente di sviluppo per le Qt su Windows

Questo articolo è rivolto a chi voglia cominciare a programmare con le librerie Qt in ambiente Windows o a chi, come me, da progammatore Qt in ambiente Linux ha la necessità di creare eseguibili per Windows. Vedremo brevemente come configurare i due principali ambienti di sviluppo disponibili (Visual Studio e Qt Creator), sfruttando le risorse gratuite disponibili in rete.

IDE: Visual Studio o Qt Creator

La prima scelta da affrontare è quella dell'IDE. Due le principali possibilità:

  • Visual Studio
  • Qt Creator

Come detto in precedenza (vedi Microsoft cambia idea?!) da non molto Microsoft ha messo a disposizione degli sviluppatori opensource la versione Community di Visual Studio, leggermente in ritardo rispetto ai rilasci della versione Professional ma sostanzialmente identica. La pagina di Wikipedia su Visual Studio vi fornirà maggiori indicazioni a proposito. Volendo essere sintetici possiamo dire che che Visual Studio è un ambiente di sviluppo completo, che va ben oltre le sole librerie Qt ma che è disponibile solo su piattaforma Windows.

Creare ed applicare patch

Vedremo come creare ed applicare patch ad un codice sorgente.

A cosa servono le patch

Supponiamo di aver scaricato dal sito pippo.org il codice sorgente di un programma. Compiliamo il programma con i canonici comandi

$ ./configure
$ make

Parte così la compilazione del codice sorgente, vale a dire: il codice del programma, scritto il più delle volte in C o C++, viene trasformato in codice eseguibile dalla macchina.

Può capitare (nessuno è perfetto!) di incontrare un errore in questa fase. Spesso per risolvere questo tipo di errori è necessario modificare il codice sorgente. Se non siete in grado di farlo direttamente, magari riuscirete a trovare qualcuno che lo faccia per voi. Supponiamo un vostro amico abbia modificato i file, e voglia inviarvi le modifiche apportate. La prima possibilità è inviarvi l'intero codice sorgente, un po' scomodo se i file sono tanti e di grandi dimensioni. L'alternativa è creare una patch, vale a dire un file testo contenente le sole modifiche apportate.

Miracoli di emacs aka la formattazione di file XML

Lavorando con file XML generati da software non è raro che tutti i tag siano disposti su un unica riga, in maniera praticamente illeggibile. Per riuscire a capirci qualcosa non basta indentare il file, è necessario aggiungere dei LF per suddifividere in più linee i tag. Ecco che ci viene incontro emacs (vedi .

Entriamo nell'ambiente integrato sgml digitando dalla linea di comando

m-x sgml-mode

Come usuale con emacs, m-x vuol dire digitare Alt-x.

Selezioniamo quindi il testo che ci interessa. Se il testo è l'intero documento digitiamo

m-x h

Diamo quindi il comando sgml-pretty-print

m-x sgml-pretty-print

et voilat, le jeux sont fait!

Qt-builds: in cinque minuti un ambiente di sviluppo per le Qt su Windows

Su Linux è tutto più facile!

Avere un ambiente di sviluppo funzionante per le Qt su linux è molto semplice. A seconda della distro che avete installato, di solito è sufficiente una semplice riga di comando.

Se lavoriamo con Archlinux, ad esempio, useremo

pacman -Sy gcc qt5-base qtcreator 

per avere tutto quello di cui abbiamo bisogno per partire con lo sviluppo

E su Windows?

Nonostante usualmente lavori con linux, a volte ho la necessità di scrivere applicazioni su Windows impiegando le librerie Qt. E su Windows le cose non sono così semplici come per linux. Chi si è trovato nella stessa situazione sa che tra incompatibilità binarie e modifiche al registro di sistema non sempre tutto fila liscio.

Ad esempio, l'SDK ufficiale delle Qt fino a poco tempo fa installava una versione di mingw (alias gcc per Windows) talmente tanto vecchiotta (la 4.4), da rendere necessaria la ricompilazione delle Qt con una versione di mingw più aggiornata, con tempi di attesa biblici e un sacco di modifiche da apportare al codice sorgente. A questo si aggiunge la necessità di avere alcune utility di solito non disponibili su windows (git, svn, bunzip…) per le quali è necessario partire alla ricerca dei singoli binari. Ma non finisce qui, perché i vari binari devono interagire tra di loro, ecco allora che si deve intervenire sulla variabile PATH piuttosto che sul registro di sistema. Insomma, per avere un ambiente di sviluppo pienamente funzionante è necessaria in media un'oretta di lavoro.

L'alternativa a tutto questo è incredibilmente semplice: un progetto disponibile su sourceforge chiamato Qt-builds.

Memorizzare un puntatore in una classe QVariant

 

Alla pagina http://blog.bigpixel.ro/2010/04/storing-pointer-in-qvariant/ ho trovato un metodo molto utile per memorizzare puntatori di qualunque tipo in un oggetto di tipo QVariant.

Per chi non fosse pratico della programmazione "Model/View" delle librerie Qt, diciamo che separando il modello dei nostri dati dalla relativa interfaccia grafica, il passaggio delle informazioni tra i due avviene attraverso oggetti di tipo QVariant, contenitori generici che possono contenere praticamente di tutto. I metodi della classe QVariant ci pemettono di gestire facilmente oggetto di tipo double, int, QString. Meno immediato è il passaggio di puntatori a classi personalizzate che adesso analizzeremo.

Vediamo i dettagli su come procedere.

Supponiamo di avere un puntatore

MyClass * pointer

Possiamo memorizzare il contenuto del puntatore in un oggetto QVariant mediante

QVariant v = qVariantFromValue((void *) pointer );

Volendo recuperare il puntatore dall'oggetto QVariant ricorriamo alle righe di codice

pointer = (MyClass *) v.value<void *>();

Possiamo semplificare quest'operazione ricorrendo ad un template contenente due metodi di tipo statico

template <class T> class VariantPtr
{
public:
    static T* asPtr(QVariant v)
    {
	return  (T *) v.value<void *>();
    }
    static QVariant asQVariant(T* ptr)
    {
	return qVariantFromValue((void *) ptr);
    }
};

E' possibile ora riscrivere le linee di codice viste sopra per memorizzazione e recuperare il puntatore dall'oggetto Qvariant. Per copiare il valore del puntatore ricorriamo a

QVariant v = VPtr<MyClass>::asQVariant(p);

Per recuperarlo invece usiamo il codice

MyClass *p1 = VPtr<MyClass>::asPtr(v);

Usare emacs per tradurre formule Latex in C

Per convertire formule scritte in Latex in formule da introdurre in codice C/C++ è possibile usare la modalità “calc-embedded” di Emacs.

Cosa sia Emacs è difficile dirlo. Diciamo che molto dipende da come lo intendete utilizzare: può essere un editor di testo avanzato (e francamente devo ammettere che molto spesso lo utilizzo in questa modalità), un mail-reader, un coltellino svizzoro tuttofare (come in questo caso) o altro ancora.

Emacs è disponibile sia su linux che su windows oltre che naturalmente i vari *BSD.

Se volete installare Emacs su linux vi basterà cercarlo nei repository della vostra distro. Su windows è possibile scaricarlo dal sito http://ftp.gnu.org/pub/gnu/emacs/.

Ritornando all'argomento di partenza, per testare la funzionalità di conversione da latex in C scriviamo in un buffer di Emacs la formula Latex

x^3 + 3 x^2 y + 3 x y^2 + y^3

indice.txt · Ultima modifica: 2013/07/08 10:00 da mickele

Facebook Twitter Google+ Digg Reddit LinkedIn StumbleUpon Email