Метод создания пустого каталога с диспетчере файла
-
27-10-2019 - |
Вопрос
Я компилирую Linux с Qt Creator. Я уже закончил основы моего графического интерфейса с помощью Qt Designer. Теперь мне нужно знать, есть ли доступный метод, который открывает файловый менеджер и позвольте мне создать каталог с именем ME?
Я нашел это:
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::AnyFile);
(видеть http://doc.qt.io/archives/qt-4.7/qfiledialog.html#directory.)
Я подключил QPushbutton методом и написал выше в него. Проблемы: файловый менеджер даже не открывается, когда я нажимаю кнопку. Кроме того, это должно работать только для создания не существующих файлов (см. Anyfile), но мне нужно создать не существующий каталог.
Я также знаю эту возможность для создания каталога:
QDir("/home/name").mkdir("NewDirectory");
Но это не удовлетворяет мои требования, поскольку имя и каталог всегда одинаковы.
Решение
Вот для решения проблемы с несуществующимися папками / файлами:
Вам нужны некоторые переменные:
QString path_trunk;
QString name;
И в слоте, который вызывается вашим кнопкой, вам придется настроить параметры, чтобы они подходят для ваших требований. Например, вы можете использовать параметры, передаваемые через кнопку или управлять некоторыми внутренними событиями. В этом случае вы можете, конечно, динамически создавать папки с помощью переменных:
path_trunk = QString("/home/username/");
name = QString("Folder_name");
QDir(path_trunk).mkdir(name);
Другой, более удобный для пользователя способ, чтобы получить значения из пользовательского интерфейса с помощью элемента редактирования линий / текста, который позволяет пользователю вводить пользовательский путь. Вы можете прочитать значения через класс пользовательского интерфейса (здесь я только что использовал стандартное имя ui). Название LineEdit может отличаться в вашем случае, если вы решили назвать его по-разному. Но вы можете получить доступ к данным, тем не менее и использовать идентификатор динамически в вашем базовом коде. Обязательно подключите свои сигналы и методы правильно.
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);
}
Вот еще один подход, поскольку от моего понимания вы хотите использовать какой-то файловый менеджер:
На самом деле вы могли бы создать свой собственный виджет файлового менеджера. Метод QDIR в основном дает вам всю необходимую необходимую для отображения папки. файлы в некоторых Item-based QTreeWidget
, Навигация через это также было бы простым заданием, поскольку вы можете использовать сигналы и слоты QtreeWidget для навигации, вам просто нужно заполнить дерево с информацией о папке. Создание новой папки, тогда будет только взаимодействие пользователя (правая кнопка мыши или, возможно, нажав на qpushbutton "Создать папку" в вашем пользовательском языке адресата файлов)