Я хочу создать диалоговое окно QT4 (с помощью QT-конструктора), которое содержит часть, где должен быть выбран файл.

Теперь я знаю, что QFileDialog существует, и я могу программировать то, что делает то, что я хочу. Но могу ли я просто сделать это в конструкторе QT?

Есть ли какой-нибудь способ получить виджет "выбор файла" в конструкторе QT? Или я помню эти кнопки с выбранным файлом в качестве заголовка и маленькой стрелкой, позволяющей пользователю выбрать другой файл с помощью QFileDialog?

Так есть ли готовое решение, или я должен запрограммировать его сам?

21
Nathan 7 Июл 2010 в 19:36

3 ответа

Лучший ответ

Насколько я знаю, у дизайнера Qt нет файлового диалога. Но вы можете легко сделать это с помощью нескольких строк кода.

Предполагая, что у вас есть простая кнопка с именем pushButton, и путь должен быть сохранен в lineEdit.

def selectFile():
    lineEdit.setText(QFileDialog.getOpenFileName())

pushButton.clicked.connect(selectFile)

[edit] Просто интересно, вы случайно не используете KDE? Если так, то вы можете использовать для этого KUrlRequester. Его можно легко настроить для поддержки чего угодно, от файлов до URL-адресов и каталогов.

33
Wolph 10 Июл 2010 в 23:55

QFileDialog существует в QtGui. По крайней мере, в моей версии 4.4 и, возможно, гораздо раньше. Я думаю, что причина этого не в Designer, потому что он открывает свое собственное окно вместо того, чтобы быть виджетом для размещения в другом окне.

Документация от QTDesigner может быть лучше и, по крайней мере, намекает на его существование.

Создайте его и выполните команду show. Он подходит и по умолчанию /.

import QtGui
self.fileDialog = QtGui.QFileDialog(self)
self.fileDialog.show()
13
Aditya 9 Окт 2013 в 11:36

Вы можете использовать метод getOpenFileName () в классе QFileDialog .

QFileDialog.getOpenFileName () вернет путь к файлу и выбранный тип файла

Я получил это: ('C: /Users/Sathsara/Desktop/UI/Test/test.py', 'Все файлы (*)')

Чтобы получить только путь к файлу, используйте QFileDialog.getOpenFileName () [0]


Образец кода:

def selectFile():
   print(QFileDialog.getOpenFileName()[0])


dlg.locationBtn.clicked.connect(selectFile)
2
Sathsara AM 12 Янв 2019 в 17:09