私はQDialogからサブクラス化されたダイアログのHWNDを読み込もうとしていますが、NULLポインタが返されるMemory Access Error
に実行中ですクライアントコード。Windows 10でQDialogのHWNDを取得する方法
ヘッダファイル - 私は私もWIDを得ることができないとしてHWNDを取得しようとあきらめて...
#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デバッガ。
試す 'this-> window() - > winId()' –
**何のためにHWNDが必要ですか?**なぜあなたはHWNDがあると仮定しますか?現代のUIではネイティブウィンドウを使用してインターフェイスを構築しません。 Qtはそれをしません、WPFはそれをしません、GTKはありません。 –