如何在Windows 10中获得QDialog的HWND
how to get HWND for QDialog in Windows 10
我正试图读取对话框的HWND,我从QDialog子类化,但我(认为我)正在运行一个导致空指针返回到客户端代码的Memory Access Error
。
头文件-我已经放弃尝试得到一个HWND,因为我甚至不能得到一个WId…
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsItem>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
WId getWindowHandle (void);
private:
Ui::Dialog *ui;
QGraphicsScene *scene;
QGraphicsTextItem *text;
};
#endif // DIALOG_H
实现:WId Dialog::getWindowHandle() {
WId id = this->effectiveWinId(); // debugger says id = 0
return id;
}
我也试过这个:
WId Dialog::getWindowHandle() {
QWidget *parent = this->nativeParentWidget(); // debugger says parent = 0
WId id = parent->effectiveWinId(); // so this crashes
return id;
}
我是Qt的新手,希望有一些明显的我错过了。
获得QDialog的WId的规范方法是什么?
工具链:Windows 10周年纪念,Qt 5.7,都是64位,Visual Studio 14 c++编译器,Windows SDK调试器
希望这对你有帮助。
在Qt 4.4中引入,外来小部件是窗口系统不知道的小部件。它们没有与之关联的本机窗口句柄。此功能显著加快了小部件的绘制、调整大小和消除闪烁。
如果您需要本机窗口的旧行为,您可以选择以下选项之一:
1在您的环境中使用QT_USE_NATIVE_WINDOWS=1。
2在应用程序上设置Qt::AA_NativeWindows属性。所有Widgets将是原生的Widgets。
3在widgets上设置Qt::WA_NativeWindow属性:widget本身所有的祖先都将成为本地的(除非Qt::WA_DontCreateNativeAncestors设置).
4调用QWidget::winId来强制使用本机窗口(这意味着3)。
5设置Qt::WA_PaintOnScreen属性以强制使用本机窗口(这意味着3).
参考QT文档http://doc.qt.io/qt - 4.8 -/- qwidget.html # effectiveWinId
Dmitry的评论(上面)有一个适合我的答案:
this->window()->winId()
返回非空uint64。
谢谢,德米特里•!
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取边缘窗口句柄 (HWND)?
- 自定义对话框(源自QDialog)不会关闭(Android)
- 标识符"hWnd"未定义
- Win32 API - HWND "{unused = ???} Unable to read memory"错误
- QDialog 不能在 Windows 上退出,但在 MacOS 上不能退出/
- 通过比较 GetCurrentProcessId();获得正确的 HWND
- 我需要通过窗口句柄(HWND)获取文件,我该怎么办?
- 由于选项卡顺序的原因,鼠标光标总是得到错误的hwnd-MFC应用程序
- QDialog自行关闭,我该如何解决?
- 枚举 HWND 属性 c++
- Qt5自定义QDialog,不使用qt创建器
- 当按下QDialog取消或确定时如何调用函数?
- 如何根据标题长度调整QDialog的大小?
- 如何通过 Qdialog 中的 qtablewidget 填充作为 MainWindow 成员的 qvector
- 正在加载 sf::图片来自 QDialog
- 在C++中将 HWND 转换为十六进制字符串
- 从 HWnd 获得永久 CWnd
- 如何释放QPushButton的焦点,这是QDialog的默认按钮
- 如何在Windows 10中获得QDialog的HWND