Domanda

Ho un personalizzato QWidget e semplice non ne vogliono sapere di presentarsi nella barra delle applicazioni. Ho un QSystemTrayIcon per la gestione di uscire / minimizzando etc.

È stato utile?

Soluzione

Credo che l'unica cosa che serve qui è una sorta di genitore segnaposto dei widget. Se si crea il tuo widget senza un genitore è considerato una finestra di livello superiore. Ma se si crea come un figlio di una finestra di livello superiore è considerato una finestra figlio und non ottiene una voce della barra delle applicazioni di per sé. La finestra padre, d'altra parte, anche non ottiene una voce di barra delle applicazioni perché non hai mai imposta visibile: Questo codice qui funziona per me:

class MyWindowWidget : public QWidget
{
public:
    MyWindowWidget(QWidget *parent)
        : QWidget(parent, Qt::Dialog)
    {

    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QMainWindow window;

    MyWindowWidget widget(&window);
    widget.show();

    return app.exec();
}

No entry barra delle applicazioni è mai mostrato, se questo è vogliono desiderato.

Altri suggerimenti

Se si desidera visualizzare / nascondere il widget senza mai mostrarla alla barra delle applicazioni vostra potrebbe controllare i windowflags di quel widget. Io non sono sicuro al 100%, ma penso che ho usato Qt::Dialog | Qt::Tool e Qt::CustomizeWindowHint per raggiungere questo obiettivo, ma la mia finestra non è stato completamente decorato troppo. Un'altra cosa che si potrebbe tenere a mente se si gioca con che è la politica di uscita della vostra applicazione. Chiusura / Nascondere l'ultimo toplevel-finestra normalmente uscire la vostra applicazione, quindi forse è necessario chiamare QApplication::setQuitOnLastWindowClosed(false) per evitare che ...

Basta impostare Qt :: bandiera sottofinestra per gadget.

codice Python per raggiungere questo obiettivo:

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class MainWindow(QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent, Qt.Tool)

window = MainWindow()
window.show()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top