Alexv ha scritto:
Powa92 ha scritto:
se voglio invece salvare i file su appdata e renderlo portabile ? ognuno ha un nome utente diverso c:\users\(nome utente)\appdata\local\myapp.
come posso rendere quel nome utente una variabile?. perchè ho intenzione di salvare anche una lista in quella cartella che voglio trasferire su appdata. poi un ultima domanda so che sono rompi, è possibile rendere i file creato in questo caso per la pass un elemento nascoto?
Stai usando Qt, giusto? Come tu ho detto usa la classe QStandardPaths per ottenere i percorsi standard di sistema.
Prima aggiungi nel main:
#include <QCoreApplication>
//...
int main(){
QApplication a(argc, argv);
QCoreApplication::setOrganizationName("Powa92"); //Facoltativo
QCoreApplication::setApplicationName("myapp");
//...
return a.exec();
}
Per dare un nome alla tua applicazione.
Per ottenere il percorso di Appdata (o equivalente su altro sistema operativo, dai un'occhiata alle tabelle riportate nel link di sopra):
#include <QString>
#include <QStandardPaths>
QString path = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation);
Per ottenere un percorso del tipo: "C:/Users/<USER>/AppData/Local/Powa92/myapp"
allora io sono riuscito a creare il file come volevo io. solo una cosa se funziona come c++ nel QcoreApplication::setApplicationName vale solo in quella istanza tra le parentesi graffe giusto ? non mi cambia nome principale del programma.. comunque ci so riuscito compilo qui il codice almeno mi dite che se c'è qualche errore o si puo migliorare
QDir ConfigFile;
ConfigFile.mkdir(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation));
ConfigFile.mkdir(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)+"/Config");
QFile myfile;
QDir::setCurrent(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)+"/Config");
myfile.setFileName("config.cpp");
if(!myfile.open( QFile::WriteOnly | QFile::Text))
QMessageBox::warning ( this, "File", "File impossibile aprire") ;
QTextStream out (&myfile);
QString username2;
username2 = ui->SaveEdit_UserName_2->text();
QString password2;
password2 = ui->SaveEdit_Password_2->text();
out << username2 <<"\n"
<< password2 <<"\n";
myfile.flush();
myfile.close();
hide();
Questo è l'input per la creazione pass
void MainWindow::on_pushButton_clicked() //Logig Password
{
QFile myfile (QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)+"/Config/config.cpp");
if(!myfile.open( QFile::ReadOnly | QFile::Text))
QMessageBox::warning ( this, "File", "File impossibile aprire") ;
QTextStream in (&myfile);
QString username2; //Login Password da i file data
username2 = in.readLine();
QString password2;
password2 = in.readLine(); //Login Password da i file data
myfile.close();
QString UserName = ui->lineEdit_UserName->text();
QString Password = ui->lineEdit_Password->text();
if (UserName == username2 || Password == password2 )
{
hide();
Menu = new MyMenu();
Menu->show();
}
else
QMessageBox::warning (this, "Login", "Dati non corretti" );
}
void MainWindow::on_pushButton_2_clicked()
{
Password = new SetPassword;
Password->show();
}
e questo è il main dove apro il dialog per la creazione pass, e la verifica del password