【发布时间】:2011-07-25 18:58:26
【问题描述】:
是的,我知道,不应该混合不同的平台,但是我正在开发一个 Qt 应用程序,现在我们有一个新要求:应该使用标准的 Windows 打开文件对话框来代替 QFileDialog。
所以我想创建一个作为 QWidget 子级的 CFileDialog。我发现了一个与逆问题相关的问题:QWidget as a child of an existing MFC component but nothing about my specific issue.
我的计划是写一个包装类
class FileStdWDialog : CFileDialog
使用构造函数
FileDirStdWDialog(QWidget *parent, ...);
并将其映射到对超类构造函数的调用
CFileDialog(..., ..., ..., ..., ..., CWnd* pParentWnd, ...)
所以,如果我理解正确,我的问题归结为映射 一个 QWidget * 到一个 CWnd *。您知道是否有简单的方法可以做到这一点?
更新
感谢您的提示。可能,为 QWidget 获取 HWND 和 将其转换为 CWnd * 是正确的解决方案。我会试试这个方法。
【问题讨论】:
-
这个问题在内部不一致——如果你想打开一个标准的 Windowws 打开文件对话框,那么就这样做,在这种情况下,QWidget 既不是父项也不是子项:对话框是独立的。
-
我对 MFC 了解不多,因为有一个参数 pParentWnd,我想我应该为它提供一个值。我会尝试使用 NULL,也许它可以工作。
-
除非您需要一些 Qt 未公开的 windows 文件对话框的特殊功能,否则您可以只使用静态 QFileDialog 函数,它们将使用平台标准文件对话框.. 看看在此:http://doc.qt.nokia.com/latest/qfiledialog.html#details
标签: qt mfc integration