PDA

View Full Version : [c++] interfaccia grafica


Prince_81
09-02-2009, 16:54
ho un programma scritto in c ma vorrei dargli un interfaccia grafica, non volendo passare ad un'altro linguaggio vorrei riadattarlo in c++ sapendo che esso permette di creare un interfaccia grafica, ma pultroppo informandomi ho constatato che di per se il c++ non ha delle librerie grafiche ma bisogna importarle è vero? sapreste indicarmi una guida se è possibile in italiano per creare interfacce grafiche in c++ ?

fero86
09-02-2009, 17:21
ho un programma scritto in c ma vorrei dargli un interfaccia grafica, non volendo passare ad un'altro linguaggio vorrei riadattarlo in c++ potresti semplicemente creare nel linguaggio che ti pare un altro programma dotato di interfaccia grafica che invoca il primo facendo il redirect degli standard streams su delle pipe.


sapendo che esso permette di creare un interfaccia grafica, in realtá esiste un toolkit grafico anche per il C, GTK, ed inoltre le API Win32 (casomai il programma sia per Windows) sono esportate quasi completamente in C o interfacce COM accessibili anche in C; fanno eccezione solo le GDI+ che io sappia.


ma pultroppo informandomi ho constatato che di per se il c++ non ha delle librerie grafiche ma bisogna importarle è vero? verissimo: il C++ é un linguaggio che deve poter essere utilizzato anche in contesti dove non ci sono interfacce grafiche.


sapreste indicarmi una guida se è possibile in italiano per creare interfacce grafiche in c++ ? se alla fine decidi realmente di fare il porting in C++ la risposta diretta é che la documentazione che devi leggere dipende totalmente dalla o dalle piattaforme su cui dovrá girare il programma: Windows? Linux? Mac? una combinazione delle precedenti?

cionci
09-02-2009, 19:14
Oppure usi un framework come QT 4.5 e ti risolvi i problemi a prescindere dalla piattaforma ;)

ndakota
09-02-2009, 22:19
Oppure usi un framework come QT 4.5 e ti risolvi i problemi a prescindere dalla piattaforma ;)

:cry: :cry:

Prince_81
10-02-2009, 14:45
ho scaricato gtk 2.14.6 ma volevo sapere è un applicazione o una libreria? non l'ho ancora installato ma c'è una guida in italiano che spiega almeno come si crea un programmino semplice così da avere un idea?

cionci
10-02-2009, 14:56
Se conosci il C++ porterei il programma al C++. GTK è un libreria grafica.
Per la documentazione: http://www.gtk.org/documentation.html

fero86
11-02-2009, 10:03
Oppure usi un framework come QT 4.5 e ti risolvi i problemi a prescindere dalla piattaforma ;) no, la risposta dipende dalla piattaforma: che se ne fa di QT se il programma dovrá girare sempre e solo su Windows? in quel caso molto meglio WTL.

cionci
11-02-2009, 10:19
no, la risposta dipende dalla piattaforma: che se ne fa di QT se il programma dovrá girare sempre e solo su Windows? in quel caso molto meglio WTL.
Che vuol dire ? Le QT sono ottime anche se utilizzate su un'unica piattaforma e non si progetta di fare il porting.

MadJackal
11-02-2009, 11:10
Che vuol dire ? Le QT sono ottime anche se utilizzate su un'unica piattaforma e non si progetta di fare il porting.

Concordo, sono ottime.
In più, nel caso in futuro si decida di farle un porting si può fare con (relativamente) pochi mal di testa. Almeno per quanto riguarda la GUI :rolleyes:

cionci
11-02-2009, 11:17
Almeno per quanto riguarda la GUI :rolleyes:
Direi non solo per la gui...ma anche per tutto quello che riguarda la comunicazione interproccesso, la creazione/gestione/sincronizzazione dei thread (semafori, mutex, etc etc), la comunicazione con un DBMS...direi che se non fanno un'applicazione intera, la fanno quasi :D

MadJackal
11-02-2009, 11:52
Direi non solo per la gui...ma anche per tutto quello che riguarda la comunicazione interproccesso, la creazione/gestione/sincronizzazione dei thread (semafori, mutex, etc etc), la comunicazione con un DBMS...direi che se non fanno un'applicazione intera, la fanno quasi :D

In effetti :asd:

gbhu
11-02-2009, 12:09
Io mi sono trovato molto bene anche con wxWidgets.
Una volta compilato il framework per fare un programmino semplice basterebbe modificare uno degli esempi forniti, anche il più semplice.

cionci
11-02-2009, 12:13
Non sono male nemmeno le wxWidgets, le ho provate abbastanza a fondo. Le QT però mi sembrano molto più omogenee e soprattutto meno buggate.

Ad esempio utilizzando QTCreator un frontend per un qualsiasi comando della shell si crea in pochi minuti. Chiaro che si debba familiarizzare un po' con il sistema slot/segnali prima di poter partire.
Ma è sufficiente leggersi questa pagina per capire: http://doc.trolltech.com/4.5/signalsandslots.html

Parlo di QT 4.5 perché finalmente adotteranno la licenza LGPL e quindi possono essere linkate dinamicamente anche da applicazioni closed.

gbhu
11-02-2009, 12:21
... Le QT però mi sembrano molto più omogenee e soprattutto meno buggate...

Visto che le conosci ti faccio una domandina veloce.
Con QT l'interfaccia grafica ha un look and feel proprietario o può essere configurato per essere identico alla GUI tipica del sistema host (vedi comportamento wxWidgets)?

cionci
11-02-2009, 12:34
Non è che sia un espertissimo, eh. In questo ambito non mi sono mai addentrato. Le QT che io sappia non possono essere configurate per avere il look & feel del sistema ospite. Il look & feel è modificabile più o meno a piacere, ci sono stili simili a quelli del sistema ospite, ma, ad esempio, una modifica allo stile del sistema non si riflette sull'applicazione QT.

Edit: evidentemente era un po' che non le provavo su Windows. La maggior parte delle volte le ho usate su Linux. Dalla versione 4.4 prendono il look & feel di Windows, anche Vista.

Prince_81
11-02-2009, 15:39
vi ringrazio ma vorrei richiedervi ho scaricato questa libreria gtk ma adesso come faccio ad usarla con Microsoft Visual C++ 2008 Express Edition ? cionci il link che mi hai dato lo conoscevo solo che è in inglese e sinceramente questo per me è un problema sapresti consigliarmi con qualche guida in italiano però che mi dicesse anceh come far funzionare questa libreria suddetto compilatore?

cionci
11-02-2009, 15:42
Prima ci spieghi perché hai ripiegato su GTK che necessitano di un percorso di apprendimento nettamente maggiore delle QT ?
Intanto cerco qualche link...

Prince_81
11-02-2009, 15:58
be non lo so nemmeno io,comuque il progetto in c sono disposto a convertirlo in c++ per quanto riguarda la libreria grafica visto che per adesso non ho person tempo ad impararne una allora consigliami tu cosa devo fare però per piacere il compilatore l'ho citato già vorrei sapere come far funzionare la libreria che mi consiglierai con tale compilatore e qualche esempio di algoritmo.

Scusami lo so sono un rompi pal.....

cionci
11-02-2009, 15:59
Questa è una guida in italiano, non so quanto aggiornata.

http://dandelion-patch.mit.edu/afs/dev/user/tibbetts/aui/third/gtk/docs/html/gtk_tut_it.html#toc22

Esiste anche un gui designer chiamato Glade, per disegnare le interfacce. Dopo si possono caricare da codice tramite file rc.

Su visual studio la libreria va usata come tutte le altre librerie. Nelle opzioni di compilazione: aggiungi il path della directory include alle directory del compilatore, aggiungi la directory lib alle directory del link...includi i .h nel codice ed aggiungi i .lib nei file da linkare nelle opzioni di compilazione.

cionci
11-02-2009, 16:03
Se vuoi usare le QT imho la strada più semplice è scaricare QT Creator.
ftp://ftp.trolltech.com/qtcreator/qtcreator-0.9.2-rc1-windows-bundle-setup.exe

Hai IDE, compilatore, sviluppo RAD e Gui designer...tutto integrato.

cionci
11-02-2009, 16:12
Ho trovato poco in italiano per QT4:
http://www.digitalfanatics.org/projects/qt_tutorial/it/index.html
Ho trovato anche un libro molto interessante pubblicato sotto Open Publication License, ma è in inglese: http://cartan.cas.suffolk.edu/oopdocbook/opensource/

Prince_81
11-02-2009, 19:07
Grazie cionci hai fatto già abbastanza spero solo di capirci qualcosa.

Solo un'ultimissima cosa qt creator che mi hai dato è l'ultima versione?
e le funzioni che vedo negli esempi quando si crea una finestra sono del c++?

cionci
11-02-2009, 19:21
Te l'ho scritto: è un ambiente integrato (non ancora in versione definitiva) per la programmazione con C++ e le librerie QT4.

fero86
11-02-2009, 20:26
Che vuol dire ? Le QT sono ottime anche se utilizzate su un'unica piattaforma e non si progetta di fare il porting. introducono una dipendenza non trascurabile: da quanto ne so o le compili nell'eseguibile (il quale a quel punto raddoppia le sue dimensioni) o te le porti appresso visto che non esiste una proecdura di installazione che le installi una volta per tutte su un dato sistema (ogni programma che le usa su uno stesso computer deve avere la sua copia :Puke: ).
WTL invece é uno strato sottile, sono templates e macro, come ATL; di conseguenza ne guadagni anche in performance.

non dico che QT sia inutile, tutt'altro: ma serve solo se si ha intenzione di fare il porting.

cionci
11-02-2009, 20:32
introducono una dipendenza non trascurabile: da quanto ne so o le compili nell'eseguibile (il quale a quel punto raddoppia le sue dimensioni) o te le porti appresso visto che non esiste una proecdura di installazione che le installi una volta per tutte su un dato sistema (ogni programma che le usa su uno stesso computer deve avere la sua copia :Puke: ).

Non vedo quale problema ci sia a portarti dietro qualche DLL insieme al tuo eseguibile ;) Anzi QT è molto avvantaggiata rispetto ad altre alternative di cui abbiamo parlato: su Windows se non sbaglio le DLL da portarsi dietro (e non da installare) sono solo due.

Ufo13
11-02-2009, 22:39
Tempo fa ho usato queste:

http://www.wxwidgets.org/

Sono cross platform e abbastanza facili da usare.

Prince_81
12-02-2009, 10:50
interessante ma pultroppo la guida in italiano riguarda il vecchio pq creator e quindi no riesco ad avviare il programma peccato era davvero carino dovrò aspettare che trovi qualche manuale sull'ultima versione.

Grazie lo stesso. ;)

cionci
12-02-2009, 10:54
Scusa, ma a che ti serve la guida di QT Creator ? Tu devi studiare solo il funzionamento delle QT4 sul link che ti ho dato sopra.

LMCH
13-02-2009, 00:25
introducono una dipendenza non trascurabile: da quanto ne so o le compili nell'eseguibile (il quale a quel punto raddoppia le sue dimensioni) o te le porti appresso visto che non esiste una proecdura di installazione che le installi una volta per tutte su un dato sistema (ogni programma che le usa su uno stesso computer deve avere la sua copia :Puke: ).
WTL invece é uno strato sottile, sono templates e macro, come ATL; di conseguenza ne guadagni anche in performance.

non dico che QT sia inutile, tutt'altro: ma serve solo se si ha intenzione di fare il porting.

Non sono d'accordo, le WTL vanno bene solo se vuoi realizzare
roba molto "banale" una-botta-e-via, ma appena cominci a fare
qualcosa di relativamente complesso QT ti semplifica enormemente
la vita (anche senza fare porting).

Inoltre QT fornisce delle buone linee guida sulla programmazione ad oggetti
e sui design pattern ottimali per molti tipi di applicazioni, tutta roba che
vale oro se si pensa di voler acquisire delle competenze che si riutilzzerano
in futuro per lavoro o per hobby.

Se poi consideri che chi sa usare QT "automaticamente"
puo sviluppare applicazioni per Windows XP/Vista, Windows CE
(palmari, navigatori GPS e Smarphone), Linux, Mac e Symbian
(per ora principalmente smarphone nokia) la cosa diventa ancora
piu interessante.

Prince_81
13-02-2009, 12:38
quando apro qt creator vado in file->new e clicco su qt4 console application e mi compariono due file un .cpp e l'altro .pro.

nel file .cpp c'è il seguente codice #include <QtCore/QCoreApplication>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);



return a.exec();
}


a questo punto voglio creare una finestra e vado di nuovo in file-> new e clicco su qt designer form e clicco su dialog without buttons ed esce una finestra vuota e si aggiunge un nuovo file dialog.ui e adesso inserisco un pulsante e qua iniziano i problemi.

1)come faccio a far capire al file .cpp che c'è una finestra con un pulsante?
2)come faccio a scrivere il codice che dovrebbe stare dietro al pulsante? si parla di signal ma la guida che cionci mi ha dato a riguardo non combacia con il nuovo qt e non riesco a seguire quegli esercizi.

potreste risolvermi questo problema?

fero86
13-02-2009, 12:56
Non vedo quale problema ci sia a portarti dietro qualche DLL insieme al tuo eseguibile ;) meno dipendenze hai, meglio é; non mi sembra tanto anti-intuitiva come cosa, portarti appresso altri files significa aumentare la dimensione del pacchetto distribuito.


Anzi QT è molto avvantaggiata rispetto ad altre alternative di cui abbiamo parlato: su Windows se non sbaglio le DLL da portarsi dietro (e non da installare) sono solo due. d'accordo, ma se si parla di WTL WTL vince su tutte: non devi portarti appresso nessuna DLL, ed inoltre ATL é giá presente in Windows. WTL é progettata per essere lightweight.


Non sono d'accordo, le WTL vanno bene solo se vuoi realizzare
roba molto "banale" una-botta-e-via, ma appena cominci a fare
qualcosa di relativamente complesso QT ti semplifica enormemente
la vita (anche senza fare porting). potresti anche avere ragione, ma finché non argomenti é aria fritta.


Inoltre QT fornisce delle buone linee guida sulla programmazione ad oggetti
e sui design pattern ottimali per molti tipi di applicazioni, e chi lo dice? lo dici tu? in tal caso de gustibus non disputandum est. io ad esempio non considero buona programmazione a oggetti l'introdurre un preprocessore addizionale che traduca in codice standard tutte le estensioni non-standard usate nel codice.


tutta roba che
vale oro se si pensa di voler acquisire delle competenze che si riutilzzerano
in futuro per lavoro o per hobby. quando si realizza un software in genere il proprio obiettivo non é quello di imparare: il training é un'altra cosa, se lo mettiamo davanti alla produttivitá siamo prossimi al fallimento.


Se poi consideri che chi sa usare QT "automaticamente"
puo sviluppare applicazioni per Windows XP/Vista, Windows CE
(palmari, navigatori GPS e Smarphone), Linux, Mac e Symbian
(per ora principalmente smarphone nokia) la cosa diventa ancora
piu interessante. questo punto é giá ampiamente chiarito: se hai bisogno di un framework portabile é naturale che WTL non faccia minimamente al caso tuo, ma un framework portabile introduce una marea di algoritmi che hanno lo scopo di esporre un'interfaccia unica che si adegui tanto a Win32 quando ai toolkit che ti pare; tutta roba inutile se sai che il tuo programma non girerá mai su due o piu piattaforme diverse.

-Slash
13-02-2009, 13:13
meno dipendenze hai, meglio é; non mi sembra tanto anti-intuitiva come cosa, portarti appresso altri files significa aumentare la dimensione del pacchetto distribuito.


d'accordo, ma se si parla di WTL WTL vince su tutte: non devi portarti appresso nessuna DLL, ed inoltre ATL é giá presente in Windows. WTL é progettata per essere lightweight.


potresti anche avere ragione, ma finché non argomenti é aria fritta.


e chi lo dice? lo dici tu? in tal caso de gustibus non disputandum est. io ad esempio non considero buona programmazione a oggetti l'introdurre un preprocessore addizionale che traduca in codice standard tutte le estensioni non-standard usate nel codice.


quando si realizza un software in genere il proprio obiettivo non é quello di imparare: il training é un'altra cosa, se lo mettiamo davanti alla produttivitá siamo prossimi al fallimento.


questo punto é giá ampiamente chiarito: se hai bisogno di un framework portabile é naturale che WTL non faccia minimamente al caso tuo, ma un framework portabile introduce una marea di algoritmi che hanno lo scopo di esporre un'interfaccia unica che si adegui tanto a Win32 quando ai toolkit che ti pare; tutta roba inutile se sai che il tuo programma non girerá mai su due o piu piattaforme diverse.
Visto che imparare BENE una libreria grafica richiede tempo, direi che conviene che ne impari una portabile come QT. Altrimenti poi cambi piattaforma e devi ricominciare da capo. Anche questa mi sembra abbastanza intuitiva come cosa.

QT tra l'altro è una libreria che credo sia la più utilizzata da grosse software house, quindi saperla usare può dare dei vantaggi anche in questo. Se il prezzo da pagare per tutto ciò è portarsi un paio di dll in più appresso direi che ne vale la pena

Prince_81
13-02-2009, 13:55
1)come faccio a far capire al file .cpp che c'è una finestra con un pulsante?
2)come faccio a scrivere il codice che dovrebbe stare dietro al pulsante?

mi aiutate a risolvere gli enigmi che ho posto prima?

Grazie

cionci
13-02-2009, 14:27
quando apro qt creator vado in file->new e clicco su qt4 console application e mi compariono due file un .cpp e l'altro .pro.
Scusa, ma perché crei una console application ? Devi creare una Gui application.
Ti verrà creato un file mainwindow.ui e lì, facendo doppio lcick su quel file, ci sarà l'interfaccia grafica del programma.
Nell'editor puoi con semplicità cambiare tutte le proprietà delle varie widget.
Clickando sul secondo bottone da sinistra sopra all'editor della finestra hai la possibilità di manipolare i segnali e gli slot trascinando la widget sorgente del segnale verso la widget destinazione del segnale. Ti apparirà a questo punto la possibilità di assegnare il segnale di una widget allo slot di un'altra.

Ovviamente ti devi studiare la documentazione, altrimenti è chiaro che tu non sappia da dove partire.

banryu79
13-02-2009, 14:31
Ovviamente ti devi studiare la documentazione, altrimenti è chiaro che tu non sappia da dove partire.
Frase da incorniciare: la prima cosa che un programmatore dovrebbe fare ogni volta che si cimenta per la prima volta con una tecnologia a lui sconosciuta.

LMCH
13-02-2009, 15:38
(riferito a QT che semplifica enormemente le cose rispetto a WTL)

potresti anche avere ragione, ma finché non argomenti é aria fritta.

Considera solo quanti moduli pronti all'uso e gia incapsulati in oggetti ci sono in Qt e considera invece cosa devi fare con WTL per fare le stesse cose.

(riferito alla programmazione object-oriented ed ai design patter di QT)

e chi lo dice? lo dici tu? in tal caso de gustibus non disputandum est. io ad esempio non considero buona programmazione a oggetti l'introdurre un preprocessore addizionale che traduca in codice standard tutte le estensioni non-standard usate nel codice.


Non consideri "buona programmazione" introdurre un preprocessore addizionale ?

Guarda che IL C++ STESSO e' stato inizialmente implementato
con un preprocessore che lo convertiva in C. :read:
Inoltre pure con le WTL dipendi pesantemente da un preprocessore (altrimenti le macro col cavolo che ti funzionano).
La programmazione ad oggetti non ha niente a che fare con i tool (chiamati automaticamente tramite make o l'ambiente di sviluppo che si usa) che eseguono la conversione da sorgenti a codice eseguibile.
ANZI l'approccio utilizzato da QT permette di evitare i problemi da "macro scritta male che per pura sfiga viene espansa in codice senza generare errori di compilazione", scusa se e' poco.


quando si realizza un software in genere il proprio obiettivo non é quello di imparare: il training é un'altra cosa, se lo mettiamo davanti alla produttivitá siamo prossimi al fallimento.


Il tuo ragionamento sarebbe impeccabile se si escludesse il training necessario per saper utilizzare le WTL.
Se hai gia dimestichezza con il sistema ad eventi e le varie API di Windows le WTL sono "facili" visto che ne semplificano l'uso; in pratica se le API di Windows sono un maiale, imparare ad usare WTL e' facile e veloce come mettere il rossetto ad un maiale ma quello che ottieni e' un maiale piu carino a vedersi.
A parte questo il training e' FONDAMENTALE per essere produttivi piu avanti e visto che Prince_81 mi sembrava ancora alle prime armi mi sembra che QT + QT Creator si adattino meglio alle sue esigenze (si scarica il bundle di Qt Creator con librerie, documentazione e compilatore e non deve preoccuparsi di niente altro, se invece usi WTL finisce che ti tocca scaricare il Visual Studio, il Platform SDK, le WTL, ecc. ecc.)


questo punto é giá ampiamente chiarito: se hai bisogno di un framework portabile é naturale che WTL non faccia minimamente al caso tuo, ma un framework portabile introduce una marea di algoritmi che hanno lo scopo di esporre un'interfaccia unica che si adegui tanto a Win32 quando ai toolkit che ti pare; tutta roba inutile se sai che il tuo programma non girerá mai su due o piu piattaforme diverse.

Marea di algoritmi ? Guarda che Qt per quel che riguarda la UI non fa altro che inserire un layer di "traduzione" (leggerissimo, tipo WTL) per la roba "gia fornita dal sistema ospite" (in questo caso Windows) e poi implementa da se tutto il resto (inclusa un sacco di roba che ti toccherebbe implementare in termini di "reinventare la fottuta ruota ogni volta").
Anche con roba che nasce e muore sotto Windows ti semplifica enormemente la vita, specialmente ora che con QT Creator hai un ambiente IDE semplice e fatto su misura per le QT.

Vincenzo1968
13-02-2009, 20:31
Ohé,

mi avete messo la pulce nell'orecchio con codesta libreria.
Ho scaricato la versione 4.5 beta per windows(a quanto pare la versione definitiva sarà disponibile il mese prossimo) ma, quando avvio l'eseguibile per l'installazione, ho un messaggio di errore che dice che il file è corrotto. Questo con entrambi i package: binary e source code. È capitato anche a voi o è un problema mio?

Trovo la documentazione molto ben fatta e, almeno per quel che ho letto finora, mi pare un'ottima libreria.

:bimbo:

wizard1993
13-02-2009, 20:59
Ohé,

mi avete messo la pulce nell'orecchio con codesta libreria.
Ho scaricato la versione 4.5 beta per windows(a quanto pare la versione definitiva sarà disponibile il mese prossimo) ma, quando avvio l'eseguibile per l'installazione, ho un messaggio di errore che dice che il file è corrotto. Questo con entrambi i package: binary e source code. È capitato anche a voi o è un problema mio?

Trovo la documentazione molto ben fatta e, almeno per quel che ho letto finora, mi pare un'ottima libreria.

:bimbo:

problema tuo; a me funziona a meraviglia

Vincenzo1968
13-02-2009, 21:10
problema tuo; a me funziona a meraviglia

Ciao,

parliamo della versione 4.5 beta per windows, giusto?

LMCH
13-02-2009, 21:53
Ciao,

parliamo della versione 4.5 beta per windows, giusto?

Quale beta ?
Io ho scaricato l'ultimo bundle completo Release Candidate di
Qt Creator + Qt 4.4.3 + compilatore MingGW (GCC per windows)
(in modo da avere il pacchetto completo) e poi
ho scaricato il Release Candidate di Qt 4.5
(le versioni di Qt possono installare su due cartelle separate e nelle
opzioni di progetto di Qt Creator si puo indicare quale versione
si vuole utilizzare per un certo progetto).

Vincenzo1968
13-02-2009, 22:13
Quale beta ?
Io ho scaricato l'ultimo bundle completo Release Candidate di
Qt Creator + Qt 4.4.3 + compilatore MingGW (GCC per windows)
(in modo da avere il pacchetto completo) e poi
ho scaricato il Release Candidate di Qt 4.5
(le versioni di Qt possono installare su due cartelle separate e nelle
opzioni di progetto di Qt Creator si puo indicare quale versione
si vuole utilizzare per un certo progetto).

Si,

per 'beta' indendevo il Release Candidate. L'ho scaricato da qui:

http://www.qtsoftware.com/developer/preview-qt-4.5

Più leggo la documentazione e più la trovo una gran bella libreria (è più m'incazzo per il problema di non riuscere a scaricarla correttamente):

:mad: :mbe: :incazzed: :grrr: :ncomment: :bsod: :huh: :bimbo:

cionci
14-02-2009, 08:55
Scarica QTCreator con la versione 4.4.3...in attesa della 4.5 va più che bene ;) Ha tutto dentro.
ftp://ftp.trolltech.com/qtcreator/qtcreator-0.9.2-rc1-windows-bundle-setup.exe

Comunque tornando al discorso WTL...io non conosco questa libreria, per questo non posso ribattere.
Posso però postare un programmino di esempio fatto al volo con QTCreator. Mi piacerebbe che fero86 ne facesse uno esattamente equivalente in WTL e postasse il codice.

Questo è il file principale:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>
#include <QFileDialog>
#include <QFile>
#include <QTextStream>


MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindowClass)
{
ui->setupUi(this);
setCentralWidget(ui->plainTextEdit);
setWindowTitle(tr("QtNotepad"));
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::on_actionOpen_triggered()
{
QString tempFileName = QFileDialog::getOpenFileName(this, tr("Apri testo"), ".", tr("File di testo (*.txt)"));

if(tempFileName == "")
return;

QFile file(tempFileName);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;

QTextStream textStream(&file);
ui->plainTextEdit->setPlainText(textStream.readAll());

file.close();

fileName = tempFileName;
setWindowTitle(tr("QtNotepad - ") + fileName);
}

void MainWindow::on_actionExit_triggered()
{
close();
}

void MainWindow::on_actionRedo_triggered()
{
ui->plainTextEdit->redo();
}

void MainWindow::on_actionUndo_triggered()
{
ui->plainTextEdit->undo();
}

void MainWindow::on_actionSalva_triggered()
{
if(fileName == "")
{
on_actionSalva_con_nome_triggered();
}
else
{
QFile file(fileName);
if(!file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text))
return;

QTextStream textStream(&file);
textStream << ui->plainTextEdit->toPlainText();

file.close();
}
}

void MainWindow::on_actionSalva_con_nome_triggered()
{
QString tempFileName = QFileDialog::getSaveFileName(this, tr("Salva testo"), ".", tr("File di testo (*.txt)"));

if(tempFileName == "")
return;

fileName = tempFileName;
setWindowTitle(tr("QtNotepad - ") + fileName);

on_actionSalva_triggered();
}

Allego anche il .h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QMainWindow>
#include <QString>

namespace Ui
{
class MainWindowClass;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = 0);
~MainWindow();

private:
Ui::MainWindowClass *ui;
QString fileName;

private slots:
void on_actionSalva_con_nome_triggered();
void on_actionSalva_triggered();
void on_actionUndo_triggered();
void on_actionRedo_triggered();
void on_actionExit_triggered();
void on_actionOpen_triggered();
};

#endif // MAINWINDOW_H

Tra l'alto ho evidenziato in grassetto le righe che ho scritto io, per le altre ci ha pensato QTCreator, ma questo esula dalla discussione.

Allego anche il progetto ;)

Vincenzo1968
14-02-2009, 16:45
Scarica QTCreator con la versione 4.4.3...in attesa della 4.5 va più che bene ;) Ha tutto dentro.
ftp://ftp.trolltech.com/qtcreator/qtcreator-0.9.2-rc1-windows-bundle-setup.exe
...


http://www.guidealgoritmi.it/images/ImgForums/QTCreator.jpg

:yeah: :winner: :yeah:

Grazie mille ;)

Io pensavo che bisognasse installare a parte la libreria prima di installare il creator.
Senti maaaaaaaaaaaaaaaaaaa

se volessi utilizzare visual studio al posto di mingw?

cionci
14-02-2009, 16:57
Con QTCreator non lo puoi usare il compilatore Microsoft.
Se vuoi usare le QT 4.5 su Visual Studio...allora puoi ricompilartele dal sorgente.

Vincenzo1968
14-02-2009, 17:16
Con QTCreator non lo puoi usare il compilatore Microsoft.
Se vuoi usare le QT 4.5 su Visual Studio...allora puoi ricompilartele dal sorgente.

uhmmm

questa è un po' una seccatura perché mingw usa la versione di 3.4 di gcc per windows che non è l'ultima, giusto?(se non sbaglio l'ultima è la 4 punto qualcosa). E abbiamo visto(dovrei postare il thread ma non ho voglia di cercarlo :bimbo:), qualche tempo fa, che questa versione di gcc ha qualche problema.

Posso arrangiarmi così: ricompilo la libreria dal sorgente; per sviluppare utilizzo QTCreator(in modo da avvantaggiarmi delle caratteristiche RAD ;)) e, alla fine, creo un progetto visual studio vuoto e gli schiaffo dentro i file .cpp e .h. Compilo e buona notte ai suonatori :bimbo:

;)

cionci
14-02-2009, 18:05
uhmmm

questa è un po' una seccatura perché mingw usa la versione di 3.4 di gcc per windows che non è l'ultima, giusto?(se non sbaglio l'ultima è la 4 punto qualcosa). E abbiamo visto(dovrei postare il thread ma non ho voglia di cercarlo :bimbo:), qualche tempo fa, che questa versione di gcc ha qualche problema.

Posso arrangiarmi così: ricompilo la libreria dal sorgente; per sviluppare utilizzo QTCreator(in modo da avvantaggiarmi delle caratteristiche RAD ;)) e, alla fine, creo un progetto visual studio vuoto e gli schiaffo dentro i file .cpp e .h. Compilo e buona notte ai suonatori :bimbo:

;)
Oppure aggiorni mingw32 con l'ultima versione :D

Vincenzo1968
14-02-2009, 19:14
Oppure aggiorni mingw32 con l'ultima versione :D

Se non sbaglio, per il momento, la versione stabile di gcc per windows è la 3.4.5.
La versione 4.3.0 è disponibile si, ma è in fase di testing:

http://sourceforge.net/project/showfiles.php?group_id=2435

cionci
14-02-2009, 19:33
Se non sbaglio, per il momento, la versione stabile di gcc per windows è la 3.4.5.
La versione 4.3.0 è disponibile si, ma è in fase di testing:

http://sourceforge.net/project/showfiles.php?group_id=2435
Ok, ma perché non ti va bene la 3.4.5 ?

Vincenzo1968
14-02-2009, 20:06
Ok, ma perché non ti va bene la 3.4.5 ?

Perché, per esempio, nel Contest 6 (http://www.hwupgrade.it/forum/showthread.php?t=1850150) gcc ha dato qualche problemino:

http://www.hwupgrade.it/forum/showthread.php?t=1850150&page=4

A quanto pare la versione precedente la 4.3 contiene qualche bug.

cionci
14-02-2009, 20:12
Perché, per esempio, nel Contest 6 (http://www.hwupgrade.it/forum/showthread.php?t=1850150) gcc ha dato qualche problemino:

http://www.hwupgrade.it/forum/showthread.php?t=1850150&page=4

Per affermare che sia un bug bisognerebbe analizzarlo bene...

Vincenzo1968
14-02-2009, 20:33
Per affermare che sia un bug bisognerebbe analizzarlo bene...

No no, è solo un sospetto, non un'affermazione. C'è un altro thread in cui io e te abbiamo confrontato le prestazioni di un programma in C++ e ci siamo accorti, alla fine, che il programma compilato con la versione di gcc per windows che utilizzavo io, forniva prestazioni inferiori a quello del tuo programma(compilato con gcc 4.3).
Vedo di trovare il thread e lo posto.

EDIT: trovato:

http://www.hwupgrade.it/forum/showthread.php?t=1816511&page=3

http://www.hwupgrade.it/forum/showpost.php?p=24137392&postcount=50

cionci
15-02-2009, 08:56
Ok, ma siamo sempre al solito discorso che ti importa, siamo nell'ordine di pochi punti percentuali :D A meno che tu non debba fare un'interfaccia grafica per un programma di calcolo ;) Poi ricordati che è solo un test relativo alla tua macchina, che se non sbaglio ha un po' poca memoria, e ad un dato algoritmo
Poi puoi sempre fare tutto il ciclo di sviluppo su QTCreator ed alla fine passare il tutto su Visual Studio.

Vincenzo1968
15-02-2009, 14:22
Ok, ma siamo sempre al solito discorso che ti importa, siamo nell'ordine di pochi punti percentuali :D A meno che tu non debba fare un'interfaccia grafica per un programma di calcolo ;) Poi ricordati che è solo un test relativo alla tua macchina, che se non sbaglio ha un po' poca memoria, e ad un dato algoritmo


D'accordo, ma mi scassa i cabasisi l'idea di dover utilizzare una versione vecchia di qualche anno quando, su altri sistemi, è disponibile la versione più aggiornata.


Poi puoi sempre fare tutto il ciclo di sviluppo su QTCreator ed alla fine passare il tutto su Visual Studio.

E io che ho detto? L'ho scritto più sopra: il progetto lo sviluppo con QTCreator e, alla fine, ricompilo i sorgenti con visual studio(e buonanotte ai suonatori) :bimbo:

cionci
15-02-2009, 14:24
D'accordo, ma mi scassa i cabasisi l'idea di dover utilizzare una versione vecchia di qualche anno quando, su altri sistemi, è disponibile la versione più aggiornata.
Ma se hai sviluppato in C fino ad adesso sul compilatore Microsoft che non è aggiornato dalla metà degli anni '90 :D

Vincenzo1968
15-02-2009, 14:26
Ma se hai sviluppato in C fino ad adesso sul compilatore Microsoft che non è aggiornato dalla metà degli anni '90 :D

:mad: :mbe: :incazzed: :grrr: :ncomment: :bsod: :huh: :bimbo:

Vincenzo1968
16-02-2009, 14:58
In attesa della versione ufficiale, ho scaricato questa versione di mingw:

http://www.tdragon.net/recentgcc/

Si tratta di una versione non ufficiale e raccomandata solo per scopi sperimentali. Ma contiene la versione aggiornata di gcc(4.3.3) ;)

Ora, in Code::Blocks, ho cambiato il path in modo da fargli utilizzare questa versione del compilatore:

1) Menù Settings -> Compiler and debugger.
2) Aprire il tab Toolchain executables.
3) Cambiare il percorso da "C:\Programmi\CodeBlocks\MinGW" a "C:\Programmi\MinGW".

C'è modo di fare la stessa cosa con QTCreator? Vorrei cioè cambiare il percorso da "C:\Programmi\Qt\QtCreator\mingw" a "C:\Programmi\MinGW".

apocaliv
16-02-2009, 16:05
Ma con Visual C++ 2008 a che scopo conviene usare le QT, GTK e altre, quando ci sono integrate le Win32 (con tanto di editor visuale). Crei un applicazione Form WIN32 e hai fatto. Ovviamente devi imparare come funzionano, però visto che sono integrate, se nn devi sviluppare per linux o altre piattaforme, ti conviene.

Prince_81
16-02-2009, 16:20
si basta creare un applicazione windows form

Vincenzo1968
16-02-2009, 17:48
Form WIN32? Intendete C++ con le estensioni per il CLR?
Io parlo di applicazioni windows native. Finora ho utilizzato le MFC e, qualche volta, per piccole applicazioni, le API win32. Ma si tratta di soluzioni valide per il solo sistema operativo della microsoft. Mi solletica, invece, l'idea dello sviluppo multipiattaforma di applicazioni GUI.

Vincenzo1968
17-02-2009, 16:25
...
C'è modo di fare la stessa cosa con QTCreator? Vorrei cioè cambiare il percorso da "C:\Programmi\Qt\QtCreator\mingw" a "C:\Programmi\MinGW".

Ho risolto col metodo brute force: ho disinstallato QTCreator; l'ho reinstallato deselezionando l'opzione "MinGW". Così facendo, il programma di setup chiede di specificare il path di installazione di MinGW. ;)

:bimbo:

banryu79
17-02-2009, 19:00
Ho risolto col metodo brute force: ho disinstallato QTCreator; l'ho reinstallato deselezionando l'opzione "MinGW". Così facendo, il programma di setup chiede di specificare il path di installazione di MinGW. ;)

:bimbo:

Viva la tecnologia :sofico:

Vincenzo1968
17-02-2009, 21:16
Viva la tecnologia :sofico:

:D

Spero che, nella versione stable di QTCreator, rendano configurabile il path del compilatore(così come avviene con Code::Blocks).

:bimbo:

Prince_81
19-02-2009, 15:33
sono riuscito ad utilizzare i pulsanti cliccando con il tasto destro su di esso e cliccando su go to slot adesso se volessi utilizzare lineEdit per visualizzare i messaggi come si fa? esistono dei membri come in visual studio?

cionci
19-02-2009, 15:49
sono riuscito ad utilizzare i pulsanti cliccando con il tasto destro su di esso e cliccando su go to slot adesso se volessi utilizzare lineEdit per visualizzare i messaggi come si fa? esistono dei membri come in visual studio?
Prince: devi leggere la documentazione !!!
Ogni oggetto che metti all'interno della finestra lo trovi all'interno dell'oggetto ui.
ui-> ti permette di accedere a tutti gli oggetti definiti sulla gui.
Clickando F1 su uno degli oggetti ti si apre l'help che ti fa vedere come è composta la classe.
Se invece clicki su help puoi inserire il nome della classe che cerchi, ad esempio QLineEdit.