2013-11-22 3 views
0

У меня есть небольшая проблема с использованием QFileDialog в Qt 5.2. Когда я открою диалоговое окно, появится диалог, но он не отправит мне никаких выбранных файлов. В приведенном ниже примере кода «selectedFiles.at (0)» ничего не дает. И пользователь выбрал правильный файл. Это проблема, связанная с моим кодом или ошибкой в ​​Qt 5.2? Помощь Pls.QFileDialog не дает выбранного файла

QFileDialog dialog; 
    QStringList selectedFiles; 

    dialog.setFileMode(QFileDialog::AnyFile); 
    dialog.setNameFilter("Images (*.png *.jpg)"); 

    if (dialog.exec()) 
    { 
     selectedFiles = dialog.selectedFiles(); 

     QImage image(selectedFiles.at(0)); 

     if(image.height() != 320 && image.width() != 240) 
     { 
      QMessageBox messageBox; 
      messageBox.setText("File is not an image or the dimension is not 320x240"); 
      messageBox.exec(); 
     } 

     else 
     { 
      ui->browseLine->setText(selectedFiles.at(0)); 
     } 
    } 
+0

Вы имеете в виду, что selectedFiles.at (0) возвращает пустую строку? – Reunanen

ответ

2

Я не вижу в коде неправильного кода, я тестировал его, и он работал нормально. Что именно вы подразумеваете под «'selectedFiles.at (0)« ничего не дает »? ВыбранныйФайл пуст (= не содержит строки) или возвращает пустую строку (= содержит пустую строку)?

Во всяком случае; вот как я обычно делаю это, может быть, попробовать код и посмотреть, если он работает:

QStringList ls = QFileDialog::getOpenFileNames(this, 
                "Choose one or more files", 
                "", 
                "Audio-Files(*.wav)"); 
for(int i = 0; i < ls.size(); i++) { 
    print(ls[i]); 
} 
+0

selectedFiles.at (0) дает пустой QString. Я проверил код, который вы дали. Но QFileDialog не отображается. И моя программа перестает работать, потому что она думает, что перед ней диалог. – JimmyD

+0

Замените это с помощью NULL, это работает? Кстати, я проверил ваш код выше, и он отлично работает для меня (я только печатал строку с std :: cout хотя) – jens108

+1

Какая ОС вы используете? Можете ли вы попробовать его с помощью диалога dialog.setOption (QFileDialog :: DontUseNativeDialog), ' – jens108

0

У меня есть точно такой же вопрос с Qt 5.1.1 или Qt5.2RC1 на Mac Os X.9 ... открытый стандартный файл остается на вершине (не всегда !, но 80% времени), скрывая приложение и показывая его снова, чтобы этот диалог исчез ... Также иногда ни один из фильтрованных файлов не будет показан.

Работает без использования Open Dialog!

Смежные вопросы