7

Is there an equivalent of the lpstrDefExt member of OPENFILENAME struct used in the Win32 function GetSaveFileName?

Here's description from MSDN:

LPCTSTR lpstrDefExt

The default extension. GetOpenFileName and GetSaveFileName append this extension to the file name if the user fails to type an extension. This string can be any length, but only the first three characters are appended. The string should not contain a period (.). If this member is NULL and the user fails to type an extension, no extension is appended.

So if lpstrDefExt is set to "txt" and the user types "myfile" instead of "myfile.txt", the function still returns "myfile.txt".

4

3 に答える 3

6

編集:これがうまくいかない場合は、@ user52366による以下の回答を見てください

指定されている場合、Qt は「selectedFilter」パラメーターからデフォルトの拡張子を抽出します。

次に例を示します。

QString filter = "Worksheet Files (*.abd)";
QString filePath = QFileDialog::getSaveFileName(GetQtMainFrame(), tr("Save Worksheet"), defaultDir, filter, &filter);

このコードを使用すると、ユーザーがダイアログで指定しなかった場合、getSaveFileName() メソッドは自動的に「.abd」ファイル拡張子を追加します。これの実装は、「qfiledialog_win.cpp」Qt ソース ファイル内の qt_win_get_save_file_name() で確認できます。

残念ながら、これは getOpenFileName() メソッドでは機能しません。

于 2013-04-09T14:22:34.627 に答える
0

LPCTSTR lpstrDefExt が何をしようとしているのか正確にはわかりませんが、Qt のドキュメントには次の例が示されています

 QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
                            "/home/jana/untitled.png",
                            tr("Images (*.png *.xpm *.jpg)"));

http://doc.qt.io/qt-5/qfiledialog.html#getSaveFileName

于 2011-08-29T18:54:58.800 に答える