2012-01-11 6 views
1

Я компилирую на Linux с Qt Creator. Я уже закончил основы моего графического интерфейса с Qt Designer. Теперь мне нужно знать, есть ли доступный метод, который открывает файловый менеджер и позволяет мне создать каталог, названный мной?Способ создания пустого каталога с файловым менеджером

Я нашел это:

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"); 

Но это не соответствует моим требованиям, так как имя и каталог всегда одинаковы.

ответ

1

Вот для решения проблемы с несуществующими папок/файлов:

Вы нужны переменные:

QString path_trunk; 
QString name; 

и в слот, который вызывается по кнопке вы должны настроить параметры, чтобы они соответствовали вашим требованиям. например вы можете использовать параметры, передаваемые через кнопку, или манипулировать некоторыми внутренними событиями. В этом случае вы могли бы, конечно, создавать папки динамически путем использования переменных:

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

QDir(path_trunk).mkdir(name); 

Другие, более удобный способ будет получать значения из пользовательского интерфейса через линию/редактирование текста элемент, который позволяет пользователю ввести пользовательский путь. Вы можете прочитать значения через UI-класс (здесь я просто использовал стандартное имя QT 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 в вашем пользовательском виджете диспетчера файлов)

+0

Помогло ли вам это? Если это было полезно, подумайте о том, чтобы отметить его как полезное/решение или повысить его. – mmoment

+0

Во-первых, thx для вашего ответа. Ваш первый метод похож на второй код, который я написал. Вторая идея интересна. Вы хотите получить имя и путь из двух UI LineEdits. Это также хорошая идея, но я должен спросить, невозможно ли открыть файловый менеджер и создать каталог с файловым менеджером, потому что это было бы гораздо более удобным для пользователя? :) На данный момент я не могу поддержать ваш ответ, потому что у меня нет репутации 15. – Streight