IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Par défaut Ne pas afficher la présence de fenêtres dans la barre des tâches d'un gestionnaire de fenêtres
    Bonjour,

    Je n arrive pas à faire disparaitre la presence de nombreuses fenetres dans le taskbar du gestionnaire de fenetre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    Q_DECL_EXPORT int main(int argc, char *argv[])
    {
     
        //QApplication::setGraphicsSystem("raster");  // Use "raster" for systems not supporting "openvg" or "opengl"
     
        QScopedPointer<QApplication> app(createApplication(argc, argv));
     
    SysTrayIcon execSystray;
    CPULoad execProcess;
    CPUInfo execCPUinfo;
    MemInfo execMem;
    SENSORStemp execTemp;
    HDDInfo execHdd;
    GetNetInfo execNet;
    MusicInfo execMusic;
    PROCESSInfo execProcessus;
    //execProcessus.start();
    //execProcessus.thread()->currentThreadId();
    //execProcessus.wait();
     
        QmlApplicationViewer viewerClock;
        viewerClock.setStyleSheet("background:transparent");   //remove background
        viewerClock.setAttribute(Qt::WA_TranslucentBackground); //background transparant
        viewerClock.setWindowFlags(Qt::FramelessWindowHint);  //remove borders
        viewerClock.rootContext()->setContextProperty("loadsystray", &execSystray);
        viewerClock.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape);
        viewerClock.setMainQmlFile(QLatin1String("qml/conkycloneqml/content/WidgetClock.qml"));
        viewerClock.move(0, 20);
        viewerClock.showExpanded();
     
        QmlApplicationViewer viewerCpu;
        viewerCpu.setStyleSheet("background:transparent");   //remove background
        viewerCpu.setAttribute(Qt::WA_TranslucentBackground); //background transparant
        viewerCpu.setWindowFlags(Qt::FramelessWindowHint);  //remove borders
        viewerCpu.rootContext()->setContextProperty("loadcpu", &execProcess);
        viewerCpu.rootContext()->setContextProperty("loadcpuinfo", &execCPUinfo);
        viewerCpu.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape);
        viewerCpu.setMainQmlFile(QLatin1String("qml/conkycloneqml/content/WidgetCpu.qml"));
        viewerCpu.move(0, 200);
        viewerCpu.show();
     
        QmlApplicationViewer viewerMem;
        viewerMem.setStyleSheet("background:transparent");   //remove background
        viewerMem.setAttribute(Qt::WA_TranslucentBackground); //background transparant
        viewerMem.setWindowFlags(Qt::FramelessWindowHint);  //remove borders
        viewerMem.rootContext()->setContextProperty("loadmem", &execMem);
        viewerMem.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape);
        viewerMem.setMainQmlFile(QLatin1String("qml/conkycloneqml/content/WidgetMem.qml"));
        viewerMem.move(0, 380);
        viewerMem.showExpanded();
     
        QmlApplicationViewer viewerHdd;
        viewerHdd.setStyleSheet("background:transparent");   //remove background
        viewerHdd.setAttribute(Qt::WA_TranslucentBackground); //background transparant
        viewerHdd.setWindowFlags(Qt::FramelessWindowHint);  //remove borders
        viewerHdd.rootContext()->setContextProperty("loadhdd", &execHdd);
        viewerHdd.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape);
        viewerHdd.setMainQmlFile(QLatin1String("qml/conkycloneqml/content/WidgetHdd.qml"));
        viewerHdd.move(0, 560);
        viewerHdd.showExpanded();
     
        QmlApplicationViewer viewerNet;
        viewerNet.setStyleSheet("background:transparent");   //remove background
        viewerNet.setAttribute(Qt::WA_TranslucentBackground); //background transparant
        viewerNet.setWindowFlags(Qt::FramelessWindowHint);  //remove borders
        viewerNet.rootContext()->setContextProperty("loadnet", &execNet);
        viewerNet.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape);
        viewerNet.setMainQmlFile(QLatin1String("qml/conkycloneqml/content/WidgetNet.qml"));
        viewerNet.move(0, 740);
        viewerNet.showExpanded();
     
        QmlApplicationViewer listTest;
        listTest.setStyleSheet("background:transparent");   //remove background
        listTest.setAttribute(Qt::WA_TranslucentBackground); //background transparant
        listTest.setWindowFlags(Qt::FramelessWindowHint);  //remove borders
        listTest.rootContext()->setContextProperty("loadnet", &execNet);
        listTest.rootContext()->setContextProperty("loadtemp", &execTemp);
        listTest.rootContext()->setContextProperty("loadhdd", &execHdd);
        listTest.rootContext()->setContextProperty("loadcpuinfo", &execCPUinfo);
        listTest.rootContext()->setContextProperty("loadmusicinfo", &execMusic);
        listTest.rootContext()->setContextProperty("loadprocessus", &execProcessus);
        listTest.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape);
        listTest.setMainQmlFile(QLatin1String("qml/conkycloneqml/content/ViewDrag.qml"));
    //    viewerNetStat.move(20, 200);
        listTest.showExpanded();
     
        return app->exec();
    }
    Cela me cree de nombreuses petites fenetres indepandantes les une des autres, car je voulais pouvoir les positionner à ma guise sur le bureau.

    Par contre je voudrais les faires disparaitres du taskbar manager du system d' exploitation.

    Avec ceci j y arrive, mais ce n' est pas l' effet souhaité, je na sais plus les deplacer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    listTest.setWindowFlags(Qt::X11BypassWindowManagerHint);
    ou
    listTest.setWindowFlags(Qt::SplashScreen);
    comment pourrais je m' y prendre pour n' afficher plus que 1 ou 2 maximum dans le taskbar du system d' exploitation?

    J' ai passé en revue Qt Namespace, mais je n' y arrive pas.

    Cordialement.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 192
    Billets dans le blog
    158
    Par défaut
    Bonjour,

    C'est amusant, c'est ce que je cherchais récemment. La solution que j'ai trouvé, c'est de faire un QWidget dans le main, qui sera parent du QMainWindow. Le QWidget n’apparaîtra pas dans la barre des tâches mais affichera l'application.

    Il y a aussi une méthode (Windows only) en utilisant l'ID de la fenêtre et en faisant un appel aux fonctions natives. Mais j'aime moins, comme solution.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Par défaut
    Merci de votre reponse.

    Je lis depuis hier soir et je suis tombé sur des sujets traitant de cela, sur stackoverflow, mais je ne m en sors pas vraiment, je n arrives pas à mettre en pratique.
    Pourriez vous me mettre sur les rails?

    Je prends un exemple:

    meminfo.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class MemInfo : public QObject
    {
        Q_OBJECT
     
     
    public:
     
        explicit MemInfo();
    .
    .
    .
    Q_INVOKABLE quint64 installedMemory();
    .
    .
    .
    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Q_DECL_EXPORT int main(int argc, char *argv[])
    {
        QScopedPointer<QApplication> app(createApplication(argc, argv));
     
    MemInfo execMem;
    .
    .
    .
        QmlApplicationViewer viewerMem;
     
        viewerMem.setStyleSheet("background:transparent");   //remove background
        viewerMem.setAttribute(Qt::WA_TranslucentBackground); //background transparant
        viewerMem.setWindowFlags(Qt::FramelessWindowHint);  //remove borders
        viewerMem.rootContext()->setContextProperty("loadmem", &execMem);
        viewerMem.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape);
        viewerMem.setMainQmlFile(QLatin1String("qml/conkycloneqml/content/WidgetMem.qml"));
        viewerMem.move(0, 380);
        viewerMem.showExpanded();
    }
    WidgetMem.qml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    .
    .
    .
        Timer {
            running: true
            repeat: true
            interval: 6000
            onTriggered: {
                currentMemTotal = loadmem.installedMemory();
        }
    .
    .
    .
            Text {
                id: textMemTotal
                x:93; y:125
                width: 48
                height: 16
                text: currentMemTotal
            }
    .
    .
    .
    j ai ce genre de shema pour chacunes des 6 fenetres, je ne sais pas vraiment si j' ai choisi la bonne approche, etant debutant c est la premiere fois que je fais une appli avec de multiples fenetres, independantes les unes des autres.

    Cordialement.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Par défaut
    Bonjour,

    J' aurai aimé savoir avec quel window manager cette technique etait possible, car la vraiment je me plante lamantablement.

    Sous GNU/linux plus specialement unity et cinnamon j ai ce comportement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        QWidget widget;
     
        QMainWindow mainwindow(&widget);
        mainwindow.show();
    M' affiche bien une fenetre mais aussi une entrée dans le taskbar du window manager

    par contre si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     QWidget widget;
    .
    .
    .
        QmlApplicationViewer viewerMem(&widget);
    .
    .
    .
    viewerMem.show();
    je n' ai effectivement pas d' entree dans le taskbar, je n' ai rien qui s' affiche du tout en fait.

    J' ai lu qu' il y avait une librairie sous kde, pour gerer cela, mais à ma connaissance rien pour les autres window manager.

    http://qt-project.org/forums/viewthread/8902

    http://stackoverflow.com/questions/4...e-taskbar-item

    Cette technique n' est valable que sous Windows?

    Je pense que je m' y prends mal, si vous pouviez me mettre sur les rails j' en serais ravis.

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 192
    Billets dans le blog
    158
    Par défaut
    C'est window.show() qu'il faut faire. Car le widget contient le mainWindow et le mainWindow si on fait show() sur lui, il se place dans la taskbar.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 24
    Par défaut
    Oui en effet, j ai mal choisis le nom.

    J ai voulu en avoir le coeur net, j ai porté l' appli sous windows 7

    Effectivement cela marche sous windows 7.

    Mais pas sous GNU/linux ( il affiche quand meme l entree dans le taskbar ).
    J' avais lu que la taskbar du window manager sous windows, n' affichait pas non plus les fenetres sans bordures, dans la taskbar, cela n' a pas l air d etre le cas sous Unity, cinnamon, et kde plasma et surement tous les autres window manager sous GNU/linux.

    Par contre je sais qu on peut, sous kde, via une lib de kwin, effacer l' entree des fenetres dans la taskbar du window manager.

    De plus, sous windows7, la techinque fonctionne pour QMainWindow , mais je n' y arrive pas pour QmlApplicationViewer.

    Je me demande comment je vais bien pouvoir m' en sortir et y parvenir sur les autres window manager...

Discussions similaires

  1. Nom groupe de fenêtres dans la barre des tâches
    Par MortDansLAme dans le forum Général Java
    Réponses: 1
    Dernier message: 23/09/2011, 16h26
  2. Réduire une fenêtre dans la barre des tâches
    Par Invité dans le forum PyQt
    Réponses: 7
    Dernier message: 10/06/2009, 05h53
  3. Réponses: 5
    Dernier message: 12/03/2008, 10h55
  4. Impromptu multi fenêtre dans la barre des tâches
    Par JYRJLC dans le forum Cognos
    Réponses: 3
    Dernier message: 07/01/2008, 12h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo