Scusate se i miei interventi sono sempre abbastanza lunghi, ma temo di non essere mai abbastanza chiaro... Ho fatto quanto segue
- letto il link
- creato il file .qrc mediante la procedura di qt creator (se non ricordo male, file, nuovo, file delle risorse selezionato dal gruppo Qt), ed è stato aggiunto in automatico al file .pro.
- ho messo i riferimenti quindi mediante il comando (anche qui vado a memoria) "copy path to clipboard"
In questo modo, se ho capito giusto quanto letto nel link, l'icona è contenuta (che detto tecnicamente a questo punto dovrebbe essere "linkata staticamente") nel file .exe, in modo che portando in giro l'eseguibile, delle icone ci si può dimenticare.
Ora però mi viene questo dubbio, supponiamo che il percorso di icona1.png, seppur nel formato del file delle risorse, venga richiamato in più punti.
Se dovessi decidere di cambiare in futuro icona1.png con icona2.png, dovrei cambiare "manualmente" in tutti i punti dove è richiamata, sperando di non saltarne qualcuno.
Ho quindi pensato, creo un file macro.h, in cui metto
codice:
#ifndef MACRO_H
#define MACRO_H
#define ICONA1 ":/icon/icona1.png"
#endif // MACRO_H
Cambio solo l'indirizzo nel file macro.h, e il resto va a posto da solo. E così ha funzionato.
Problema successivo: l'icona in questione, può essere modificata dall'utente.
Pensavo di risolvere così.
- ho un file .ini con le impostazioni del programma
- creo la chiave per memorizzare l'indirizzo di icona1 di default
- implemento quanto necessario per far modificare all'utente l'icona
- memorizzo il percorso dell'icona utente nel file delle impostazioni, così resta memorizzata la nuova impostazione lato utente
Dovrebbe funzionare.
Anche in questo caso, pensavo di sostituire con macro le voci per accedere al file .ini, così, in caso di future revisioni/modifiche, cambiata la macro, tutto va a posto in un colpo solo.
Ad esempio, per memorizzare la chiave relativa all'icona 1, nel file .ini "originale" del programma
definisco in macro.h
codice:
#define KEY_ICONA1 "icona1"
#define ICONA1_PATH ":/icon/icona1.png"
dove mi serve icona1 avrò, detto setting l'istanza dell'oggetto QSettings
codice:
QIcon(setting.value(KEY_ICONA1,ICONA1_PATH).toString())//a memoria...
e così per altre opzioni modificabili dall'utente.
Dopo aver proceduto così per due o tre icone, il comando build&run si è bloccato, non c'è stato più verso di farlo andare a buon fine (nemmeno dopo clean, run QMake, ecc)
Ma il blocco è dovuto ad aver intorodotto troppi #define (sono arrivato al massimo ad una decina per ora, però se non è la strada da percorrere, sono all'inizio, quindi faccio ancora in fretta a cambiare)?
P.S. disperato, ho disinstallato Qt in blocco (con varie peripezie perchè c'erano due file, di cui non ricordo il nome, che bloccavano molti file delle cartelle di Qt stesso, residuo della compilazione restata a metà), ho reinstallato tutto, ed ha compilato...
Grazie