2

この問題に関する手がかりをしばらく探していましたが、結果はありませんでした。それで、ここに行きます...

ファイルダイアログウィンドウを開くためのシンプルなボタンが必要なアプリケーションがあります。メイン ウィンドウには、ファイルの読み取りまたは作成/書き込みを行う他のボタンがあります (選択した機能について適切なチェックを行った後)。QFileDialog::getSaveFileName() 関数を問題なく使用していましたが、Windows 7 では、ファイルが存在し、読み取り専用の場合、これは失敗します。この問題を回避するために getOpenFileName() に切り替えましたが、ユーザーが存在しないファイルを選択しようとすると、ファイル ダイアログが失敗するようになりました (保存操作には関係ありません)。

ファイルダイアログに「Create New File」アイコンを追加する方法、またはファイルダイアログウィンドウ内の右クリックメニューに追加する方法はありますか? (さらに別の) Windows の動作変更のためだけに、アプリを書き直さなければならないのは本当に嫌です。

4

2 に答える 2

1

QFileDialog::getOpenFileName()既存のファイルを開く場合にのみ使用してください。存在しないファイルの名前を入力してシス​​テムが文句を言う場合、これは適切な動作です。存在しないファイルを開くことはできないことを正しく伝えています。

既存のファイルに書き込むか、新しいファイルを作成する場合は、使用する必要がありますQFileDialog::getSaveFileName()

オペレーティング システムで読み取り専用としてマークされている既存のファイルに書き込もうとして、ファイルが読み取り専用であるというエラーが表示された場合、そのエラーは正しいものです。読み取り専用ファイルへの書き込みは許可されるべきではありません。それが読み取り専用の意味です。

あなたが説明したことから、ここにはエラーはありません。すべてはあるべき姿で起こっています。システムに別のことを強制しようとしている場合は、そうしないでください。むしろ、物事を別の方法で行うことを考えてみる必要があります。

于 2013-06-16T09:53:38.820 に答える