1

私はQtquick GUIにポップアップメニューを追加しています(ここのように、私は信じています)、予想通りに動作しません。

これが私がすることです:

import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQuick.Window 2.2
import QtQuick.Controls 2.0
import QtQuick.Controls.Styles 1.2

ApplicationWindow
{
    ...

    // File menu button.
    Rectangle
    {
        id: ribbonFileMenuButton
        anchors.right: parent.right
        anchors.verticalCenter: parent.verticalCenter
        width: height
        height: parent.height
        scale: ribbonFileMenuButtonMA.pressed ? 1.3 : 1
        color: "transparent"

        // Icon.
        RibbonFileButtonIcon
        {
            id: ribbonFileMenuButtonIcon
            anchors.fill: parent
        }

        // Behavior.
        MouseArea
        {
            id: ribbonFileMenuButtonMA
            anchors.fill: parent
            onClicked: menu.open() /*popup()*/
        }
    }
    ...

    // File.
    Menu
    {
        id: menu
        y: 20

        MenuItem
        {
            text: "New..."
        }
        MenuItem
        {
            text: "Open..."
        }
//        MenuSeparator { }
        MenuItem
        {
            text: "Save"
        }
    }

...
}

まず、 menu.popup()ではなくmenu.open( )を呼び出す必要があります (上記のリンクに示されているドキュメントで説明されているように): menu.popup()はエラーを出力します:

TypeError: オブジェクト QQuickMenu(0x20f40f0) のプロパティ 'popup' は関数ではありません

次に、MenuseParator {}を除外した場合、次のエラーが発生します。

MenuSeparator はタイプではありません

繰り返しますが、提供されたリンクのドキュメントによると、動作するはずです。

ネットで調べたのですが、ちょっと迷いました…

ありがとう、

アントワーヌ。

4

1 に答える 1

2

@ManuelHが言ったMenuSeparatorように、Qt Quick Controls 2では利用できません...まだ. :)

2.0 バージョンは、新しい API をもたらす完全な書き直しです。多くの同じタイプがありますが、API や Qt Quick Controls 1.x の動作に依存しないように、ドキュメントに厳密に従う必要があります。

メジャー バージョン (QtQuick 1.0 から QtQuick 2.0、Qt 4 から Qt 5 など) 間では、ソースの互換性の中断は (最小限に抑えるように努めていますが) 許可されています。

2 つの API の違いの詳細については、このページと、リンク先のブログ投稿参照してください。

于 2016-07-22T15:28:26.053 に答える