2017-02-02 5 views
2

Ich brauche ein QWindow, um screenChanged-Signal in Objekt A zu erfassen.
Ich habe QWidget B, das Qt :: Window-Flag hat.
B ist ein Elternteil von A.
Nach Objekt der Klasse A wurde erstellt ich so eine Verbindung zu nennen versuchen:
windowHandle gibt 0 zurück

bool isOk = connect(b->window()->windowHandle(), SIGNAL(screenChanged(...)), a, SLOT(...))); 
assert(isOk); 

ich eine Störung erhalte, die sagt:
QObject :: connect: Keine Verbindung (null) :: screenChanged (QScreen *) mit CFloatingEdit :: onScreenChanged()

Warum ist b-> window() -> windowHandle() Null?
Mache ich mit screenChanged den richtigen Weg?

+3

Werfen Sie einen Blick auf die Implementierung der Funktion 'windowForWidget' in Ming-Ming Chengs Antwort in [this] (http://stackoverflow.com/questions/14048565/get-hwnd-on-windows-with-qt5-from) -wid) Frage. – Steeve

+3

Die Nullptr wird zurückgegeben, wenn Ihr Widget nicht nativ ist. Sind Sie sicher, dass Sie ein geeignetes Widget verwenden? – arturx64

+3

Übrigens können Sie das Qt :: WA_NativeWindow-Attribut für Widgets festlegen, um es nativ zu machen. – arturx64

Antwort

2

Merged Kommentare zur Antwort:

Steeve: Werfen Sie einen Blick auf die Umsetzung der windowForWidget Funktion in der Ming-Ming Cheng Antwort auf diese Frage.

arturx64: Die Nullptr wird zurückgegeben, wenn Ihr Widget nicht nativ ist. Sind Sie sicher, dass Sie ein geeignetes Widget verwenden? Übrigens können Sie das Qt :: WA_NativeWindow-Attribut für Widgets festlegen, um es nativ zu machen.

Verwandte Themen