Frage

Ich bin mit der Qt-Bibliothek eine Diashow auf dem zweiten Monitor angezeigt wird, wenn der Benutzer den zweiten Monitor nicht verwendet wird. Ein Beispiel hierfür ist der Benutzer ein Spiel in dem ersten Monitor zu spielen und die Diashow im zweiten Monitor zeigt.

Das Problem ist, dass, wenn ich ein neues Fenster in Qt öffnen, wird es automatisch den Fokus von der früheren Anmeldung stiehlt. Gibt es eine Möglichkeit, dies zu verhindern?

War es hilfreich?

Lösung

Es dauerte eine Weile, um es zu finden, aber ich fand es: setAttribute(Qt::WA_ShowWithoutActivating);

Dies zwingt das Fenster nicht zu aktivieren. Auch mit der Qt::WindowStaysOnTopHint Fahne

Andere Tipps

Wenn Sie Floating Vorschaufeld machen wollen / andere Widget unterhalb

verwenden nur
thumbnail = new QLabel;
thumbnail->setAttribute(Qt::WA_ShowWithoutActivating);
thumbnail->setParent(0);
thumbnail->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint);

Qt :: Tool ist wichtig Flag es funktioniert. Ich meine nicht den Fokus zu stehlen.

Widgets nicht akzeptiert Fokus standardmäßig aber vermutlich haben Sie nicht ein einfaches Widget erstellt? Welche Unterklasse war es? QMainWindow oder etwas anderes?

Es ist möglich, das Fenster Subklassen Standardfokus so versucht Aufruf explizit QWidget :: setFocusPolicy mit Qt :: NoFocus vor dem Aufruf von QWidget :: show ().

zu akzeptieren

Also, stellen Sie sicher, dass Sie nicht QWidget :: activateWindow () auf dem Fenster oder eine ihrer Widgets an jedem beliebigen Punkt aufrufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top