Domanda

Sto compilando su Linux con Qt Creator.Ho già finito le basi della mia GUI con Qt Designer.Ora devo sapere se è disponibile un metodo che apra il file manager e mi permetta di creare una directory da me nominata?

Ho trovato questo:

QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::AnyFile);

(vedere http://doc.qt.io/archives/qt-4.7 / qfiledialog.html # directory )

Ho collegato un QPushButton con un metodo e ci ho scritto quanto sopra. I problemi sono: Il file manager non si apre nemmeno quando premo il pulsante.Inoltre questo dovrebbe funzionare solo per la creazione di file non esistenti (vedi AnyFile), ma ho bisogno di creare una directory non esistente.

Conosco anche questa possibilità per creare una directory:

QDir("/home/name").mkdir("NewDirectory");

Ma questo non soddisfa le mie richieste poiché il nome e la directory sono sempre gli stessi.

È stato utile?

Soluzione

Ecco per risolvere il problema con le cartelle / file inesistenti:

Hai bisogno di alcune variabili:

QString path_trunk;
QString name;

e nello slot che viene chiamato dal tuo pulsante dovrai regolare i parametri in modo che si adattino alle tue esigenze, per. per esempio. è possibile utilizzare i parametri trasmessi tramite il pulsante o essere manipolati da alcuni eventi interni. In tal caso potresti ovviamente creare cartelle dinamicamente utilizzando le variabili:

path_trunk = QString("/home/username/");
name = QString("Folder_name");

QDir(path_trunk).mkdir(name);

Un altro modo più intuitivo sarebbe quello di recuperare i valori dall'interfaccia utente tramite un elemento di modifica di riga / testo che consente all'utente di immettere un percorso personalizzato. Puoi leggere i valori tramite la classe UI (qui ho appena usato il nome QT standard ui). La riga del nomeEdit può essere diversa nel tuo caso se scegli di denominarla in modo diverso. Ma puoi comunque accedere ai dati e utilizzare id dinamicamente nel tuo codice sottostante. Assicurati di collegare correttamente i tuoi segnali e metodi.

void MainWindow::on_pushButton_clicked_path_dynamic()
{
    QString temp_path = ui->lineEdit->text();
    QDir().mkdir(temp_path);
}

void MainWindow::on_pushButton_clicked_trunk_plus_dynamic()
{
    QString ext_path = ui->lineEdit->text();
    QDir(path_trunk).mkdir(ext_path);
}

Ecco un altro approccio, dal momento che da quanto ho capito si desidera utilizzare una sorta di File Manager:

Quello che potresti effettivamente fare sarebbe creare il tuo widget per il gestore di file. Il metodo QDir fornisce fondamentalmente tutte le informazioni necessarie per visualizzare una cartella incl. file in alcuni Item-based QTreeWidget, anche la navigazione attraverso quello sarebbe un compito facile poiché puoi usare i segnali e gli slot di QTreeWidget per navigare, dovresti solo riempire l'albero con la tua cartella Informazioni. La creazione di una nuova cartella sarebbe quindi solo un'interazione dell'utente (pulsante destro del mouse o magari facendo clic su un QPushButton "Crea cartella" nel widget del gestore di file personalizzato)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top