12
votes

Menubars à Qtquick Controls 2

Comment puis-je avoir des menuches dans Qtquick Controls 2? Il était comme celui-ci (dans ApplicationWindow): xxx

mais après la mise à niveau vers qt 5.7 Il donne cette erreur: Nom de la propriété non valide "Menubar". (M16)

ps Il utilisait l'utilisation du système de menu natif de l'appareil, par exemple sur OS X, il utilisait le Topbar Menubar de Topbar de l'écran natif, sous Linux et Windows, il utilisait Natif dans l'application Topbar Menubar, etc.


1 commentaires

S'il vous plaît essayez de poster un exemple complet ... Quel est votre élément root? Quelles sont vos importations? Si vous utilisez ApplicationWindow La propriété semble exister en 5.7 ... ( doc.qt.io/qt-5.7/... ).


5 Réponses :


4
votes

the applicationWindow de la propriété QT Quick Commands 2 n'a pas de propriété Menubar, il a été remplacé par un en-tête propriété qui accepte élément (mais il n'accepte pas Menubar plus).

Les commandes rapides QT 2 ne sont pas destinées à offrir une application de bureau native, mais sont censées proposer des composants simples, efficaces et personnalisables. Par exemple, dans qqc2, vous utiliseriez une barre d'outils ou un onglet comme en-tête d'un applicationwindow .

Bien que ce ne soit pas documenté, il semble que juste avoir un Menubar en tant qu'enfant d'un ApplicationWindow (dans QQC1 et QQC2) définit la barre de menu native sur OS X (Pas sur Android, et je ne l'ai pas testé sur d'autres plates-formes).


1 commentaires

Merci d'info, mais j'utilise QT pour que j'écris une fois et j'écris une fois partout. J'ai posé la même question sur le blog Qt annonçant la publication Qt 5.7 et c'est leur réponse: blog.qt.io/16/qt-5-7-releed/#COMMENT-197915



7
votes

4 commentaires

Eh bien, j'utilise qt afin que je puisse écrire une fois et l'utiliser partout. J'ai pu avoir des menuaux indigènes dans toutes les plateformes qui l'ont soutenu avec Qtquick Controls 1. *.


Merci pour info btw.


Est qt.labs.platform disponible dans qt 5.7? Ne semble pas comme ça.


@Violetgirafe Nope, il sera disponible en 5.8.



6
votes

J'ai posé la même question sur le blog Qt annonçant la sortie de QT 5.7 et c'est leur réponse: http://blog.qt.io/blog/2016/06/16/qt-5-7-releed/#COMMENT-1197915 << / p>

SE SE SE SE SE SE SE QUE NOUS AVONS ATTENDRE QT 5.8 ou CLONE LE REPO AS MITCH SUMPÉRÉ DANS SA RÉPONSE.

Mise à jour

Ceci est maintenant implémenté dans QT Quick Commands 2: HTTPS : //doc.qt.io/qt-5.10/qml-qtquick-controls2-menubar.html


5 commentaires

Depuis le blog post QT Quick Controls 2.0 - Un nouveau départ! : "Il n'y a pas de styles natifs dans Qt Quick Commands 2 - Tous les styles sont croisés et semblent identiques sur toutes les plateformes." Je ne pense pas que le module Qt.Labs.platform fait partie des commandes rapides QT 2. Si vous souhaitez des contrôles natifs, collez-vous avec des commandes rapides QT 1 (en mélangeant avec quelques contrôles rapides QT 2 en cas de besoin).


Avez-vous lu la réponse de J-P Nurmi à mon commentaire? La citation que vous avez mentionnée parle des styles. Je suppose que soutenir les icônes de ménubar ou de plateau indigènes ou des choses comme celle-ci est légèrement différente des styles ou des choses de bouton comme ça. Ou peut-être qu'il a changé d'idée un peu et ajouté quelques exceptions à des exceptions pour les menuches, les icônes de plateau ou les dialogues.


Oui, je faisais seulement parler de QQC2. Je crois que le soutien aux menus de la plate-forme natif ne fera pas partie de QQC2 mais d'un autre module.


Je vois, oui ça a du sens.


@Grecko Je pense que ce sera une partie du même module, juste une importation différente, de la même manière que qt.labs.calendar fait partie de qtquickcontrols2.git .



2
votes

Cette fonctionnalité a été introduite pour les contrôles2 dans Qt 5.10. L'interface est très similaire, sauf que les ménulseurs ont été remplacés par l'action plus universelle.

La documentation est ici.

Je réalise que c'est une ancienne question, mais cela pourrait toujours être pertinent pour les passants comme moi.


0 commentaires

1
votes

Je viens de rencontrer cette question tout en faisant face à ce problème moi-même. qt.labs.platform code>, comme mentionné, ne fonctionne pas sous Windows, et qt.quick.controls 2 code> n'essaie pas de mettre en œuvre des menus naïvement sur quoi que ce soit. Ceci n'est pas satisfaisant si vous voulez des menus autochtones réels au lieu d'objets QML personnalisés.

La solution que j'ai trouvée est d'importer qtquick.controls 1 code> et d'utiliser juste pour la fenêtre principale et le menu. bar. La syntaxe d'importation de QML rend cela facile. Par exemple: P>

import QtQuick.Controls 2.12
import QtQuick.Controls 1.2 as OldControls

OldControls.ApplicationWindow {
    visible: true
    
    menuBar: OldControls.MenuBar { // Should attach natively
        OldControls.Menu {
            title: 'File'
            OldControls.MenuItem {
                text: 'New'
                shortcut: StandardKey.New
                onTriggered: context.new()
            }
        }
    }
    
    Button { ... } // QtQuick.Controls 2 version
}


0 commentaires