Qt 4.4.1: Help!!!!!

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Avatar utente
craft
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2059
Iscrizione: venerdì 6 aprile 2007, 18:07
Distribuzione: Ubuntu 14.04 (x86_64)
Località: Napoli

Qt 4.4.1: Help!!!!!

Messaggio da craft »

Ciao a tutti ecco il mio problema: ho installato(scaricandole dal sito della Trolltec le qt4, ho copilato e tutto ok (ovviamente, prima che lo dimentico, uso kubuntu 8.04 con kde 3.5.10)
Crei il mio programmino, gli do i seguenti comandi:
qmake-project
qmake
make
ma al make mi da il seguente errore:
uic: File generated with too recent version of Qt Designer (4.0 vs. 3.3.8b)
make: *** [untitled.h] Error 1
credo d'aver fatto qualche casino...nel senso che forse ho una versione vecchia di make e con adept non ne trovo una più nuova...
Help........... ::)
Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che si realizzi! A.Einstein
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Re: Qt 4.4.1: Help!!!!!

Messaggio da Spiros »

Devi usare qmake 4, e non qmake 3. Hai cercato di usare qmake 3 per compilare un progetto scritto con le QT4. Da terminale dai un

Codice: Seleziona tutto

sudo update-alternatives --config qmake
E seleziona qmake-qt4. In questo modo quando darai un qmake il sistema andrà a prendere la versione 4.

Buon lavoro (e divertimento) con le Qt!
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
craft
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2059
Iscrizione: venerdì 6 aprile 2007, 18:07
Distribuzione: Ubuntu 14.04 (x86_64)
Località: Napoli

Re: Qt 4.4.1: Help!!!!!

Messaggio da craft »

mmmmm, guarda che mi dice il terminale:
C'è un solo programma che fornisce qmake
(/usr/bin/qmake-qt3). Non c'è nulla da configurare.
come è possibile?
Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che si realizzi! A.Einstein
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Re: Qt 4.4.1: Help!!!!!

Messaggio da Spiros »

Probabilmente perché hai compilato da solo le Qt invece di installarle da repo. Immagino che qmake-qt4 sia installato in /usr/local/bin. Controlla che esista effettivamente, quindi prova a compilare il tuo progetto, ma invece di qmake -project usa /usr/local/bin/qmake-qt4 -project e lo stesso per qmake, subito dopo. Se non c'è in /usr/local/bin, oppure non si chiama così, trovalo (potrebbe essere in /usr/local/lib, in /opt, ...) e crea un symlink in /usr/bin chiamato qmake e toglilo dalle /etc/alternatives.
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
craft
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2059
Iscrizione: venerdì 6 aprile 2007, 18:07
Distribuzione: Ubuntu 14.04 (x86_64)
Località: Napoli

Re: Qt 4.4.1: Help!!!!!

Messaggio da craft »

Allora ho trovato un qmake (e non un qmake-qt4, anche se sinceramente mi sembra strano dato che ho in /usr/bin un qmake-qt3 ) in /usr/local/Trolltech/Qt-4.4.1/bin ed è l'indirizzo da cui avvio anche Assistant e Designer...
Si ho compilato senza installare da Synaptic
Mi consigli di disinstallare ed reinstallare da Synaptic o creo il collegamento?
Curiosità: da terminale ho dato più volte il comando :
/usr/local/Trolltech/Qt-4.4.1/bin/qmake-project
e mi rispondeva con un errore tipo nessun file o directory..
Ciao.
Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che si realizzi! A.Einstein
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Re: Qt 4.4.1: Help!!!!!

Messaggio da Spiros »

Non so quanto tu sia a conoscenza delle variabili d'ambiente, del funzionamento della bash eccetera, ma:
  • Un sistema compilato (correttamente) è più rapido e meglio funzionante di un sistema installato precompilato (quindi se le qt che hai compilato funzionano tieniti quelle)
  • Le Qt sono installate tutte in /urs/local/Trolltech/Qt-4.4.1/ (librerie, headers, eseguibili,...). Quindi se vuoi aprire un programma (per esempio assistant) devi aprire /usr/local/Trolltech/Qt-4.4.1/bin/assistant, oppure mettere /usr/local/Trolltech/Qt-4.4.1/bin/ nel PATH. Anche qmake si trova lì.
  • qmake-project non esiste. Per fare quello che vuoi fare devi digitare qmake -project (ossia: -project è un parametro da passare a qmake, quindi c'è lo spazio in mezzo)
Se non è chiaro chiedi pure.  :D
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
craft
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2059
Iscrizione: venerdì 6 aprile 2007, 18:07
Distribuzione: Ubuntu 14.04 (x86_64)
Località: Napoli

Re: Qt 4.4.1: Help!!!!!

Messaggio da craft »

mmmm, non mi ero accorto che non avevo inserito lo spazio tra qmake e -project :-[
Effettivamente non sono molto esperto di tutte quelle diavolerie che hai appena menzionato :-[ ma sto provando a rimediare...
Il mio vero problema e che dopo anni di windows e programmazione in visual basic credevo che anche con il c++ avrei potuto programmare molto semplicemente e creare programmini con una gui..in visual basic(come gambas)  disegno la mia gui poi clico ad esempio su un pulsante che ho precedentemente inserito e ad sempio, al click su di esso gli faccio fare una cosa....col c++ (che sto studiando) riesco a fare programmini che funzionano tramite la bash ma appena provo ad inserire una interfaccia grafica vado in tilt perchè non ho ancora ben capito come cavolo associare ad un pulsante una parte di codice per fargli fare qualcosa.... :-[
comunque tornando a noi ora funziona ma al make mi restituisce il seguente errore:
luigi@luigi-desktop:~/Documenti/Programmazione Qt$ make
/usr/local/Trolltech/Qt-4.4.1/bin/uic untitled.ui -o ui_untitled.h
g++ -Wl,-rpath,/usr/local/Trolltech/Qt-4.4.1/lib -o Programmazione\ Qt    -L/usr/local/Trolltech/Qt-4.4.1/lib -lQtGui -L/usr/local/Trolltech/Qt-4.4.1/lib -L/usr/X11R6/lib -pthread -lpng -lSM -lICE -pthread -pthread -lXi -lXrender -lXrandr -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [Programmazione Qt] Error 1
che sinceramente credo che sia dovuto ad una cattiva programmazione, me lo confermi?
Per usare qmake digitando semplicemente qmake ora come dovrei fare?
symlink
? Come si fa? :-[
Un sistema compilato (correttamente) è più rapido e meglio funzionante di un sistema installato precompilato (quindi se le qt che hai compilato funzionano tieniti quelle)
Per questo molti dicono che gentoo o simili sono "migliori" di ubuntu/fedora/suse? che sono precompilati?vero? ???
(ot)Ma ora gentoo non attraversa un momento di crisi?
Ciao e grazie...
Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che si realizzi! A.Einstein
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Qt 4.4.1

Messaggio da Spiros »

craft ha scritto:
Un sistema compilato (correttamente) è più rapido e meglio funzionante di un sistema installato precompilato (quindi se le qt che hai compilato funzionano tieniti quelle)
Per questo molti dicono che gentoo o simili sono "migliori" di ubuntu/fedora/suse? che sono precompilati?vero? ???
(ot)Ma ora gentoo non attraversa un momento di crisi?
Crisi? Non ne so niente. Io la usicchio e non è male. Poi... Gentoo è Gentoo, il portage, la configurazione, il fascino... Il fatto che sia un sistema che ti compili tu ti porta sì ad avere un software perfettamente adattato al tuo hardware, personalizzato eccetera, ma al giorno d'oggi, con i processori che ci sono la differenza non è così marcata.  (ot)
craft ha scritto: comunque tornando a noi ora funziona ma al make mi restituisce il seguente errore:
luigi@luigi-desktop:~/Documenti/Programmazione Qt$ make
/usr/local/Trolltech/Qt-4.4.1/bin/uic untitled.ui -o ui_untitled.h
g++ -Wl,-rpath,/usr/local/Trolltech/Qt-4.4.1/lib -o Programmazione\ Qt     -L/usr/local/Trolltech/Qt-4.4.1/lib -lQtGui -L/usr/local/Trolltech/Qt-4.4.1/lib -L/usr/X11R6/lib -pthread -lpng -lSM -lICE -pthread -pthread -lXi -lXrender -lXrandr -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [Programmazione Qt] Error 1
che sinceramente credo che sia dovuto ad una cattiva programmazione, me lo confermi?
Manca solo una cosa: il main. Quando fai un progetto c++, ti conviene fare così: ci dev'essere un file chiamato main.cpp che contiene la funzione main(). Il file può essere così:

Codice: Seleziona tutto

#include <iostream>
#incliude <QtGui>
#include "MyPushButton.hpp"

using namespace std;

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    MyPushButton* button = new MyPushButton();
    button->show();
    return app.exc();
}

E poi per ogni classe fatta da te (nell'esempio: MyPushButton) ci dev'essere un file "header" con nome uguale al nome della classe ed estensione .hpp e un file con nome uguale e estensione .cpp. Nell'header metti la definizione della classe (qui l'esempio del MyPushButton) con i prototipi dei metodi:

Codice: Seleziona tutto

#include <QtGui>

class MyPushButton : public QPushButton
{
public:
    MyPushButton();
};
Nell'altro file scrivi le definizioni dei metodi (stesso esempio, file MyPushButton.cpp):

Codice: Seleziona tutto

#include "MyPushButton.hpp"

MyPushButton::MyPushButton()
    : QPushButton(tr("Ciao, mondo!"))
{}
Come vedi la classe MyPushButton non è altro che un QPushButton, solo che il costruttore richiama il costruttore di QPushButton dandogli il parametro tr("Ciao, mondo!")) in modo che tutti i MyPushButton hanno la scritta "Ciao, mondo!".

Il file header dev'essere #incluso sia dal file .cpp della classe, in modo che la classe sia definita quando si definiscono i metodi, sia dai file in cui viene usata la classe (qui per esempio nel main, ma può essere usata anche da altri file, per esempio in MyMainWindow in cui il widget centrale è un MyPushButton). Invece il file .cpp non viene mai incluso altrove e viene compilato da solo. La compilazione di MyPushButton.cpp genera un file oggetto (MyPushButton.o), così come per tutte le altre classi e per il main. Poi questi file oggetto vengono uniti. Ma della compilazione si occupa qmake. Tu devi solo far sì che lui si trovi un progetto ben strutturato, con il main.cpp, le varie classi con header e file cpp e le inclusioni corrette.
Quando dai un qmake -project lui legge il progetto, controlla i file che ci sono e prepara la compilazione. Poi il comando qmake legge il file di progetto, legge i vari file e scrive un Makefile che sappia dove trovare tutto ciò che gli serve eccetera. Con make semplicemente compili.

Beh, mi sono fatto capire? La sostanza è che ti serve un main.

Semmai crea una cartella Prova, mettici dentro i file dell'esempio che ti ho fornito e prova a compilare.
craft ha scritto:
symlink
? Come si fa? :-[
Il symlink si ottiene con il comando ln -s file link e ti permette di creare un link chiamato link al file file. Sono validi sia percorsi assoluti che relativi, ma ovviamente per indicare correttamente il file da linkare è meglio usare sempre percorsi assoluti.

Ma piuttosto che creare questi link è meglio lavorare sul PATH. Apri un terminale e digita il comando echo $PATH: vedrai una serie di percorsi separati da ":". Queste sono le directory in cui il sistema cerca i file eseguibili, in modo che quando tu digiti aptitude lui traduce in /usr/bin/aptitude. È sufficiente che tu inserisca /usr/local/Trolltech/Qt-4.4.1/bin nel PATH predefinito per non dover più andare tu a cercare qmake o assistant, ma lo faccia il sistema.
Ora, la definizione del PATH non so più bene dove sia nelle ultime versioni di Ubuntu. Comunque se tu inserisci un file qt.sh nella directory /etc/profile.d con questa riga all'interno, dovrebbe andare (ma prima devi anche fare logout/login):

Codice: Seleziona tutto

export PATH=$PATH:/usr/local/Trolltech/Qt-4.4.1
Ok, ora devo scendere in cantina...

P.S.: sì, sono in lizza per il premio "Post più lungo della storia"...

P.P.S.: per i blocchi di codice usa il tag [ code ] invece di usare [ quote ].
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
craft
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2059
Iscrizione: venerdì 6 aprile 2007, 18:07
Distribuzione: Ubuntu 14.04 (x86_64)
Località: Napoli

Re: Qt 4.4.1: Help!!!!!

Messaggio da craft »

Spiros, non so come ringraziarti, è quasi un anno che tento di capirci qualcosa inviando milioni di post sul c++(se cerchi ne troverai molti) e mai nessuno è stato così chiaro e gentile da farmi cominciare a capire qualcosina...Sai per chi di informatica ne sa poco (uso il pc praticamente per lavorare con calc ed internet da anni, ora per me è per tanti è un momento di crisi totale....guarda cosa è accaduto a Lehman e soci... ) è difficile cominciare a capire il funzionamento del c++
Il mio progetto credo che sia semplice, allora io creo una gui con qtdesiger (quindi senza scrivere nulla ma disegnandola come se stessi usando gambas)
poi dovrei creare il main.cpp (e dentro che ci scrivo? ho letto milioni di guide ma non ci sono mai riuscito) vorrei poi avviare la mia gui contenente un pulsante che cliccato mi apra una finestra di dialogo (ovviamente disegnata in precedenza) oppure che al click del tasto mi scriva "ciao mondo" o non so che faccia qualcosa. Ho capito che entrano in gioco i parametri signal e slot ma non ho ben capito come farli funzionare...
Perdona ma la classe(il file .hpp contiene quello che deve fare il pulsante? o non ho capito un tuborg?)
Insomma Aiutoooooooooooo che forse posso cominciare a creare qualcosa....(mi piacerebbe tanto!!!!!!!!!!)
Io ho sempre usato il visual basic e li le cose erano molto più semplici ma quando ho incontrato in c++ si è instaurato un rapporto di odio/amore..
Comunque ciao e grazie.
Mo beviamoci una birra... (b2b)
Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che si realizzi! A.Einstein
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Re: Qt 4.4.1: Help!!!!!

Messaggio da Spiros »

Qualche tempo fa avevo provato a tuffarmi nelle GTK: per prima cosa disegnavo con Glade l'interfaccia, poi iniziavo a scrivere il programma richiamando i widgets che avevo disegnato e scrivendo il loro comportamento, facendo i collegamenti,...
Questo più o meno è quello che facevi tu con Visual Basic e Gambas (credo, sono cose che non ho mai usato). Con le Qt questo non lo so fare, un po' perché nel frattempo mi sono evoluto, un po' perché sospetto che con le Qt la storia sia un po' diversa. Certo, c'è il designer, ma io non lo so usare, o meglio non so integrare nei programmi. Semplicemente disegno la gui scrivendola.

Secondo me (ma questa è la strada che ho percorso io...) prima impari a usare bene il c++ (non dico che devi essere un professionista, ma sapere la teoria: che cos'è una classe, una struct, i tipi di base, l'input/output, la STL, come si scrive davvero una classe e perché, i prototipi delle funzioni, l'overloading. Io ho iniziato a programmare davvero in Python, in cui per definire una classe semplicemente scrivi la classe, con i metodi, definisci direttamente i metodi ed è finita. In c++ prima scrivi che cosa contiene la classe: proprietà (variabili) e metodi (funzioni). Non devi dire quanto valgono o a che cosa servano. Devi solo dire che esistono di che tipo sono, che tipo restituiscono, i parametri che prendono.
La definizione dei metodi (cioè la scrittura vera e propria delle funzioni) si fa a parte. All'inizio mi sembrava così stupido. Poi ho capito...

Quanto alle Qt, quando hai fatto quanto ho detto sopra (ma non per forza, anche durante, in fondo così impari più cose alla volta), inizia dai tutorial, ti insegna molto. Impara a scrivere il programma, perché la gui fa parte del programma. Impara che cos'è un widget, come funzionano le eredità, impara che cosa sono i signals e gli slots (all'inzio ci si mette un po', se segui questa strada ricordami, che ti do qualche dritta, perché vedrai: quanto avrai capito dirai "Ora ho capito!", poi inizierai a scrivere un programma e dirai "Ma questo non lo posso fare!" e poi ci penserai a lungo e dirai "Ma questo è un casino!", eccetera,...). Impara a usare l'assistant. Quando scrivo Qt dietro l'editor c'è l'assistant. Qualcuno ha perso giornate intere a rompersi i ... per scrivere quella documentazione, ti assicuro che lo incontrassi lo bacerei. È in inglese, sì, ma non c'è altra possibilità...

E, lo so che suona orribile e antipatica, ma... niente fretta. Impara a mostrare all'utente un pulsante, poi un pulsante con la scritta che cambia quando ci clicca, poi .... poi piano piano inizia a scrivere una finestra degna di questo nome. Il designer... arriverà.
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
craft
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2059
Iscrizione: venerdì 6 aprile 2007, 18:07
Distribuzione: Ubuntu 14.04 (x86_64)
Località: Napoli

Re: Qt 4.4.1: Help!!!!!

Messaggio da craft »

quello che mi dici tu è proprio quello che sto facendo, sto imparando il c++(certo non sono un genio) e contemporaneamente studio le qt per creare la mia prima applicazione...
Leggo Assistant e vedo gli esempi ma comunque non mi riesce nulla (l'unico mio progetto funzionante è un semplice programma che esegue operazioni aritmetiche e geometriche) ora vorrei poter fare qualcosa di più complesso....
Comunque grazie mille e ciao. ;D
Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che si realizzi! A.Einstein
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti