0

現在、MacOS X.6 で Windows 用に作成されたソフトウェアをテストしています。そして、ほとんどのものはすでに機能していますが、現在、私は1つのことで立ち往生しています.MacでのネイティブのSaveFileNameダイアログです。

QString fileName = m_sSaveAsDir + "untitled." + m_sFileExtension;
qDebug() << "File Extension:" << m_sFileExtension; //"jpg"
qDebug() << "SaveDir:" << m_sSaveAsDir; //""
qDebug() << "Filename:" << fileName; //Filename: "untitled.jpg"
fileName = QFileDialog::getSaveFileName( 0, tr( "Save As" ), 
           fileName, tr("Images (*.dng *.tif *.jpg)"), 0, 0 );
qDebug() << "Filename:" << fileName; //Filename: "//...../Pictures/untitled.dng"

したがって、明らかに以前の拡張子 jpg は MacO では無視されるため、表示も保存もされません。これは私にとっては問題ありません。さらに、Qt のマニュアルには、MacOS ではフィルターが無視されると書かれています。SaveDialog の Browser のフォルダを見れば、これは正しいです (ファイルはフィルタリングされていません)。しかし、ファイルダイアログに拡張子が入力されていない限り、フィルターの最初の拡張子が拡張子として使用されるようで、非常に迷惑です。どうすればこの問題を回避できますか? getSaveFileName() メソッドの最後の引数を「DontUseNativeDialog」に変更して、NonNativeSaveDialog を使用しようとしましたが、これはほとんど機能しますが、見栄えがよくありません。助言がありますか?

こんにちはドニー

4

1 に答える 1

0

非静的 QFileDialog メソッドを使用して、ダイアログを自分で構築できます。これについてはQFileDialog docsに従ってください。次に、次のように空の文字列に設定できるQFileDialog::setDefaultSuffix()を参照してください。

dialog.setDefaultSuffix(QString());

その後、ファイルの末尾には何も自動的に追加されません。これをテストするのに便利な Mac はありませんが、動作するはずです。

于 2012-05-03T16:06:01.517 に答える