Problema: una tabella di tipo QTableView, dopo una query di tipo select, presenta occasionalmente righe vuote in più
Soluzione: questo succede quando la precedente invocazione di setFilter() ha dato un risultato nullo, ovvero la select usata non ha restituito alcuna riga.
- select 1 sulla tabella -> risultato vuoto -> setFilter(vuoto) = tabella vuota
- select 2 sulla tabella -> risultato pieno -> setFilter(pieno) = tabella con righe della select + righe vuote
Per ovviare a questo noto problema basta imporre una condizione: se una qualsiasi select dà un risultato nullo, non applicare il filtro sulla tabella.
if(query.next())
setFilter(condizione);
else
QMessageBox::warning(0,"Attenzione","Nessun risultato trovato");
giovedì 30 settembre 2010
giovedì 23 settembre 2010
Qt: mingw32\bin\ld.exe: cannot find -lqtmaind
Problema: compilando un progetto con C++/Qt alla fine compare il seguente messaggio di errore:
mingw32\bin\ld.exe: cannot find -lqtmaind
Soluzione: se siete nuovi alle librerie grafiche Qt, probabilmente non sapete che esistono due tipi di compilazione: Debug e Release.
La differenza principale fra le due è che la modalità Debug include alcune informazioni supplementari che permettono al debugger di tenere traccia del comportamento dell'applicazione a runtime, permettendo di capire gli errori di eventuali crash.
La Release mode non si occupa di questo, perciò la compilazione è più veloce, il codice è ottimizzato, e l'eseguibile finale ha una dimensione nettamente minore rispetto alla Debug mode.
I nomi difatti rispecchiano le loro funzioni: la compilazione Debug dovrebbe servire in fase di sviluppo del progetto; la Release serve a compilare il programma finale, poco prima della distribuzione.
E cosa centra l'errore con tutto questo?
Le librerie Qt vengono distribuite compilate in Release mode (anche per ridurre il peso da scaricare), di conseguenza non sono adatte alla compilazione Debug di default. Se volete usare questa modalità dovete andare su:
Start > Tutti i programmi > cartella Qt
e cercare una voce simile a "Build Debug Libraries". Vi avviso che l'operazione è piuttosto lunga, anche di qualche ora.
Perciò se non avete voglia di aspettare, vi consiglio di compilare sempre in Release mode, settandola sotto la tab "Projects" di Qt Creator, oppure aggiungendo la specifica CONFIG+=release nello step QMake.
mingw32\bin\ld.exe: cannot find -lqtmaind
Soluzione: se siete nuovi alle librerie grafiche Qt, probabilmente non sapete che esistono due tipi di compilazione: Debug e Release.
La differenza principale fra le due è che la modalità Debug include alcune informazioni supplementari che permettono al debugger di tenere traccia del comportamento dell'applicazione a runtime, permettendo di capire gli errori di eventuali crash.
La Release mode non si occupa di questo, perciò la compilazione è più veloce, il codice è ottimizzato, e l'eseguibile finale ha una dimensione nettamente minore rispetto alla Debug mode.
I nomi difatti rispecchiano le loro funzioni: la compilazione Debug dovrebbe servire in fase di sviluppo del progetto; la Release serve a compilare il programma finale, poco prima della distribuzione.
E cosa centra l'errore con tutto questo?
Le librerie Qt vengono distribuite compilate in Release mode (anche per ridurre il peso da scaricare), di conseguenza non sono adatte alla compilazione Debug di default. Se volete usare questa modalità dovete andare su:
Start > Tutti i programmi > cartella Qt
e cercare una voce simile a "Build Debug Libraries". Vi avviso che l'operazione è piuttosto lunga, anche di qualche ora.
Perciò se non avete voglia di aspettare, vi consiglio di compilare sempre in Release mode, settandola sotto la tab "Projects" di Qt Creator, oppure aggiungendo la specifica CONFIG+=release nello step QMake.
Qt: il progetto si compila sempre tutto!
Problema: Un progetto compilato in C++/Qt si ricompila ogni volta tutto, compilando anche files che non sono stati modificati dall'ultima volta.
Soluzione: se guardate ai vostri files di progetto, probabilmente presentano una data antecedente a quella del file progetto .pro. Questo perché magari avete modificato la data di sistema e poi compilato il progetto.
La soluzione è molto semplice e si chiama Touch 3.0. Con questo programma potete modificare qualsiasi attributo cronologico dei vostri files, compresa data di creazione, modifica e ultimo accesso, ad un singolo file, ad un gruppo di files, o anche di un'intera cartella con files in sottocartelle. Insomma, davvero efficace e ben fatto.
Il link per scaricarlo è il seguente: Touch 3.0
Dopo averlo installato basta modificare la data di tutti i files del progetto a quella attuale. Poi non avrete più problemi.
Soluzione: se guardate ai vostri files di progetto, probabilmente presentano una data antecedente a quella del file progetto .pro. Questo perché magari avete modificato la data di sistema e poi compilato il progetto.
La soluzione è molto semplice e si chiama Touch 3.0. Con questo programma potete modificare qualsiasi attributo cronologico dei vostri files, compresa data di creazione, modifica e ultimo accesso, ad un singolo file, ad un gruppo di files, o anche di un'intera cartella con files in sottocartelle. Insomma, davvero efficace e ben fatto.
Il link per scaricarlo è il seguente: Touch 3.0
Dopo averlo installato basta modificare la data di tutti i files del progetto a quella attuale. Poi non avrete più problemi.
Iscriviti a:
Post (Atom)