2017-03-20 14 views
2

私のアプリケーションでは、多くのイメージを読み込む必要があります。私は実際に最後に開いたファイルを選択するオプションを使用するので、最後に選択したファイルを知りたいと思います。ドキュメントは言う:getOpenFileName - 最後に開かれたものが最後に開かれていない

QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), 
              "/home", 
              tr("Images (*.png *.xpm *.jpg)")); 

ファイルダイアログの作業ディレクトリは、ディレクトリに設定されます。 dirにファイル名が含まれている場合、そのファイルが選択されます。

最後に開いたファイルパスをどこかに保存してから、「/ home」の代わりに挿入する必要があります。しかし、それは動作しません。開いているファイルのダイアログでは、最後の数文字までファイル名が削除され、ファイルは選択されません。 どうしたのですか?バグですか?

私の現在のコード:

QString fileName = QFileDialog::getOpenFileName(this, "Select file", 
    lastUsedFile, "Image Files (*.png *.jpg *.jpg *.bmp);; JPEG(*.jpg *.jpeg);; PNG(*.png);; BMP(*.bmp)"); 

if (!fileName.isEmpty()) 
    lastUsedFile = fileName; 

私が達成したい何を選択してにスクロールにするファイルです。

答えて

2

QFileDialog :: getOpenFileName()の3番目のパラメータです。そしてそれをQSettingsに保存しなければなりません。例えば

QString fileName = QFileDialog::getOpenFileName(
     this, tr("Open file"), 
     Settings.value(DEFAULT_DIR).toString(), 
     tr("Images (*.png *.xpm *.jpg)"); 

if (!fileName.isEmpty()) { 
    QDir curDir; 
    Settings.setValue(DEFAULT_DIR, curDir.absoluteFilePath(fileName)); 
} 
+0

私は期待通りに動作しないこと、言ったように。 ![IMAGE](https://image.ibb.co/k61oMF/dialog.jpg)保存されているものとダイアログにロードされているものがあります(ファイルが選択されておらず、原因名が無効です) – Pawel

+0

あなたのコードも教えてください。 – michalis

+0

実際にダイアログに読み込まれる内容は正しいはずです。スクリーンショットのテキストの選択が表示されますか?ホームボタンを押すと、入力にファイルのフルネームが含まれていることがわかります。あなたがWindows上でデフォルトでシステムを使用しているので、これがQtの問題か標準のファイルを開くダイアログの問題かどうかは本当に分かりません。ただし、 'DontUseNativeDialog'オプションでそれをオーバーライドできます。 –

関連する問題