5

次のようにQFileDialogを開くQDialogがあります。

QFileDialog fd(this);
fd.setFileMode(QFileDialog::AnyFile);

if (fd.exec()) {
    // save data to a file
}

残念ながら、デフォルトの動作はそれほどデフォルトではないようです。また、既存のファイルを選択した場合、ファイルダイアログは上書きについてプロンプトを表示しません。電話をかけるsetConfirmOverwrite(true)か、setOption(QFileDialog::DontConfirmOverwrite, false)最初に電話しても役に立ちません。私はこれをUbuntu11.04とWindowsXPの両方のQt4.7.3と4.7.4の両方でテストしました。

周りを見回して、このバグレポートを見つけました。 QFileDialog::getSaveFileName()この問題が発生しましたが、これはMaemoに固有であり、Qt4.7.3がリリースされるかなり前に修正されました。アプリケーションでそのメソッドを使用すると、問題なく機能し、ファイルの上書きについてプロンプトが表示されます。getSaveFileName()(関係のない理由で使いたくない。)

私はこれが彼らのために働いていないことについて不平を言っている人を見つけることができません。私は何か間違ったことをしていますか、それともこれはバグですか?プロンプトが意味をなさない単純な[開く]ダイアログであるかどうかがダイアログにわからないことが原因である可能性がありますが、[保存]ダイアログであると判断する方法がわかりません([上書きの確認]オプションを設定する以外に、これは失敗します)、そしてドキュメントそれがデフォルトでプロンプトを出すべきであると言っています。

4

1 に答える 1

9

また、開いているモードではファイルを上書きしているとは見なされないため、ダイアログが保存モードになっていることを確認する必要があります。fd.setAcceptMode(QFileDialog::AcceptSave);これを行うには、コード例を呼び出します。QFileDialog::acceptModeを参照してください。

于 2013-03-13T23:36:04.000 に答える