CFileDialog как дочерний элемент QWidget - PullRequest
0 голосов
/ 19 июля 2011

Да, я знаю, нельзя смешивать разные платформы, но я работаю над приложением Qt, и теперь у нас есть новое требование: вместо QFileDialog должен использоваться стандартный диалог открытия файлов Windows.

Итак, я хотел бы создать CFileDialog, который является дочерним для QWidget. Я нашел вопрос, связанный с обратной проблемой: QWidget как дочерний элемент существующего компонента MFC, но ничего о моей конкретной проблеме.

Мой план - написать класс-оболочку

class FileStdWDialog : CFileDialog

с конструктором

FileDirStdWDialog(QWidget *parent, ...);

и сопоставьте это с вызовом конструктора суперкласса

CFileDialog(..., ..., ..., ..., ..., CWnd* pParentWnd, ...)

Итак, если я правильно понимаю, моя проблема сводится к отображению QWidget * для CWnd *. Знаете ли вы, есть ли простой способ сделать это?

Обновление

Спасибо за подсказки. Возможно, получить HWND для QWidget и преобразование этого в CWnd * является правильным решением. Я попробую так.

1 Ответ

2 голосов
/ 19 июля 2011

Вы можете позвонить ::GetOpenFileName и ::GetSaveFileName. Это те функции Win32, которые CFileDialog обертывают, я думаю. Так что вам не понадобится MFC.

Кстати, начиная с Windows Vista, рекомендуется использовать Общий элемент диалога вместо стандартных диалогов Открыть и Сохранить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...