Domanda

Sto utilizzando la libreria Qt per mostrare una presentazione sul secondo monitor quando l'utente non utilizza il secondo monitor. Un esempio è l'utente a giocare un gioco nel primo monitor e mostrando la presentazione nel secondo monitor.

Il problema è che quando apro una nuova finestra in Qt, ruba automaticamente il focus dall'applicazione precedente. C'è un modo per evitare che ciò accada?

È stato utile?

Soluzione

Mi c'è voluto un po 'a trovarlo, ma ho trovato: setAttribute(Qt::WA_ShowWithoutActivating);

In questo modo la finestra non attivare. Anche con la bandiera Qt::WindowStaysOnTopHint

Altri suggerimenti

Se si vuole fare in casella di anteprima galleggiante / qualsiasi altro widget basta usare seguente

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

Qt :: Tool è importante bandiera per farlo funzionare. Non intendo rubare messa a fuoco.

Widget non accettano di messa a fuoco di default, ma presumibilmente non hanno creato un widget pianura? Quale sottoclasse era? QMainWindow o qualcos'altro?

E 'possibile il default sottoclassi finestra per accettare attenzione in modo da provare in modo esplicito chiamando QWidget :: setFocusPolicy con Qt :: Non in primo piano prima di chiamare QWidget :: show ().

Inoltre, assicurarsi che non stai chiamando QWidget :: activateWindow () sulla finestra o uno qualsiasi dei suoi widget in qualsiasi punto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top