Qt でさえ、プラットフォームに依存しません ;) 共通の API の下で、プラットフォームの仕様 (WIN32 API と X11 API など) をカプセル化するだけです。あなたの場合も同じです。アプリケーションで必要な API を提供する (Qt ベースの) クラスを設計し、既存の (プラットフォーム固有の) コードを使用して必要な機能を提供します。アプリケーションでは、Qt ベースの API のみを使用し、アプリケーション コードでプラットフォームの仕様について心配する必要はありません。また、API に対して任意の数の単体テストを記述して、API が正しく動作することを確認できます。
例 (100% 完全なコードではありません!):
ヘッダー ファイルで:
class QMySpecificAPI : public QObject {
Q_OBJECT // only required when you need signals/slots
public:
QList<QString> getOpenFiles();
}
あなたのcppファイルで:
#include "QMySpecificAPI.h"
#ifdef Q_WS_WIN
QList<QString> QMySpecificAPI::getOpenFiles() {
// Use WIN32 API to retrieve the file list
}
#endif
#ifdef Q_WS_MAC
QList<QString> QMySpecificAPI::getOpenFiles() {
// Use MACOSX API to retrieve the file list
}
#endif
特に、既存のコードにすでに多くの問題があるとおっしゃっているので、単体テスト ケースを実装し、定期的に実行してコードを自動的にチェックすることを強くお勧めします。
...
QMySpecificAPI api;
QList<QString> fileList = api.getOpenFiles();
ASSERT(fileList.count() == 5); // or whatever you expect
...