2014-05-23 2 views
2

У меня есть небольшое приложение, которое требует пути к определенному файлу, который будет предоставлен пользователем во время выполнения. Все, что мне нужно, это путь. Я считаю, что это какая-то форма файла file explorer, в котором пользователь может пройти через дерево каталогов.Есть ли в Qt собственный «файловый проводник», который я могу использовать для выбора пользователем пути к определенному файлу?

Есть ли способ сделать это в Qt, или я должен вызвать реализацию собственной ОС (если это возможно). Если не в Qt, как я могу использовать локальную реализацию ОС?

+4

Вы искали документацию 'QFileDialog'? http://qt-project.org/doc/qt-4.8/qfiledialog.html –

+0

Я сделал поиск в Google, и это не пришло. Все, что я нашел, это несколько программ [open-source] (http://qt-apps.org/content/show.php/QtFileMan?content=126862). Возможно, я использовал неправильные ключевые слова. Спасибо! В общем, можно ли использовать локальный API файловой системы ОС? Я никогда не пробовал этого, мне просто интересно узнать, возможно ли это. – sherrellbc

+0

Если вы хотите, чтобы ваша программная ОС была независимой, я бы предложил использовать классы файловой системы Qt - 'QDir',' QDirIterator', 'QFile,' 'QFileInfo' и т. Д. –

ответ

5

Это то, что пытается достичь QFileDialog, поэтому я бы предложил использовать это, если это приложение на основе виджета. Все, что вам нужно будет написать что-то вроде этого:

fileName = QFileDialog::getOpenFileName(this, 
tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)")); 

Это вызовет диалоговое окно для выбора, который пользователь может использовать для навигации.

Если вам случится использовать QML, вы можете попробовать попробовать FileDialog component. Затем вы напишете примерно следующее:

import QtQuick 2.2 
import QtQuick.Dialogs 1.0 

FileDialog { 
    id: fileDialog 
    title: "Please choose a file" 
    onAccepted: { 
     console.log("You chose: " + fileDialog.fileUrls) 
     Qt.quit() 
    } 
    onRejected: { 
     console.log("Canceled") 
     Qt.quit() 
    } 
    Component.onCompleted: visible = true 
} 
Смежные вопросы