标签: qtquickcontrols

如何将QML代码拆分为多个文件?

我刚开始玩QML并且有一个视图,我有一堆组件如下:

Window {
    ....
    property Component dateTumbler: ControlView {
        // Definition follows
    }

    property Component timeTumbler: ControlView {
       // More definition follows
    }

    // More controls
}
Run Code Online (Sandbox Code Playgroud)

这使得主QML文件编辑和维护非常冗长且繁琐.我试着把它分成不同的文件,如下所示:

// DateTumblerView.qml
component: DateTumblerView { // Not sure how to inherit here..
    // Definition here
}
Run Code Online (Sandbox Code Playgroud)

我试图像这样使用它:

property component dateTumbler: DateTumblerView {}
Run Code Online (Sandbox Code Playgroud)

然而,这永远不会奏效,而且DateTumblerView从未找到过.我不确定我是否正确这样做.

[编辑] ControlView定义如下:

import QtQuick 2.2
import QtQuick.Controls 1.1
import QtMultimedia 5.5

Rectangle {
    id: view
    property bool darkBackground: false

    Text {
        id: textSingleton
    }

    SoundEffect {
        id: …
Run Code Online (Sandbox Code Playgroud)

qt qml qtquick2 qtquickcontrols

3
推荐指数
1
解决办法
2054
查看次数

导入QtQuick.Controls 2.0不起作用 - QQmlApplicationEngine无法加载组件

我有利用其产生的项目中应用CMakeQt5.7,所以当import QtQuick.Controls 2.0应用程序失败,出现以下错误加载:

插件无法加载模块 "QtQuick.Controls":无法加载库C:\ Qt的\ Qt5.7.0\5.7\msvc2015\QML\QtQuick\Controls.2\qtquickcontrols2plugind.dll:指定的模块找不到.

的CMakeLists.txt

set(CMAKE_PREFIX_PATH "C:\\Qt\\Qt5.7.0\\5.7\\msvc2015")
set(CMAKE_AUTOMOC ON) 
set(CMAKE_AUTORCC ON) 
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

find_package(Qt5Core REQUIRED)
find_package(Qt5Qml) 
find_package(Qt5Quick) 
find_package(Qt5QuickControls2)

...

add_executable(MyApp ${SRC} ${HEADER} ${RESOURCES})

target_link_libraries(MyApp
Qt5::WinMain    
Qt5::Core   
Qt5::Qml    
Qt5::Quick  
Qt5::QuickControls2     
)
Run Code Online (Sandbox Code Playgroud)

DLL在visual studio输出中加载的文件:

'MyApp.exe' (Win32): Loaded 'C:\Qt\Qt5.7.0\5.7\msvc2015\qml\QtQuick.2\qtquick2plugind.dll'. Symbols loaded.
'MyApp.exe' (Win32): Loaded 'C:\Qt\Qt5.7.0\5.7\msvc2015\qml\QtQuick\Controls.2\qtquickcontrols2plugind.dll'. Symbols loaded.
'MyApp.exe' (Win32): Unloaded 'C:\Qt\Qt5.7.0\5.7\msvc2015\qml\QtQuick\Controls.2\qtquickcontrols2plugind.dll'
Run Code Online (Sandbox Code Playgroud)

qt qt-quick qtquick2 qtquickcontrols qtquickcontrols2

3
推荐指数
1
解决办法
6817
查看次数

如何使用 QML 工具按钮填充 QTableview

我需要按红色圆圈下的创建按钮,然后按此按钮我试图填充表格视图的第一行。我是 QT Quick 的新用户,请帮助我。我浪费了很多时间却没有办法。

我还提供了 UI 和代码,请查看。

谢谢 !在此输入图像描述

    import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Layouts 1.0
import QtQuick.Dialogs 1.0
import "content"
import "images"

ApplicationWindow {
    visible: true
    title: "Mask Editor: Subsystem"

    width: 720
    height: 420
    minimumHeight: 400
    minimumWidth: 720

    statusBar: StatusBar {
        id: minstatusbar

            RowLayout {
                id:row1
              spacing: 2
              width: parent.width
              Button {
                  text:"Unmask"

              }
              Item { Layout.fillWidth: true }
                Button {
                    text:"OK"

                }
                Button {
                    text:"Cancel"

                }
                Button {
                    text:"Help"

                }
                Button {
                    text:"Apply"
                }
            }
        } …
Run Code Online (Sandbox Code Playgroud)

qml qt-quick qt5 qtquickcontrols qqmlcomponent

2
推荐指数
1
解决办法
2180
查看次数

如何使图像填充qml控件按钮

我想要填充图标Button.这是代码:

import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Layouts 1.1
import QtQuick.Window 2.2

Window{
    id: root
    title: "settings"
    flags: Qt.Dialog
    minimumHeight: 700
    minimumWidth: 700
    maximumHeight: 700
    maximumWidth: 700

    ColumnLayout{
        id: columnLayout
        anchors.fill: parent
        RowLayout{
            Button{
                iconSource: "images/1x1.png"
                checkable: true
                checked: true
                Layout.minimumWidth: 100
                Layout.minimumHeight: 100
                }

            Button{
                iconSource: "images/1x2.png"
                checkable: true
                checked: false
                Layout.minimumWidth: 100
                Layout.minimumHeight: 100
            }
            Button{
                iconSource: "images/2x1.png"
                checkable: true
                checked: false
                Layout.minimumWidth: 100
                Layout.minimumHeight: 100
            }
            Button{
                iconSource: "images/2x2.png"
                checkable: true
                checked: false
                Layout.minimumWidth: …
Run Code Online (Sandbox Code Playgroud)

qt qml qtquickcontrols

2
推荐指数
2
解决办法
1万
查看次数

尝试以编程方式在ListView中居中项目

我想在QML中设置中心项ListView,因此我添加了以下代码ListView:

import QtQuick 2.0
import QtMultimedia 5.5
import QtQuick.Controls 1.3
import QtQuick.Extras 1.4
import QtQuick.Layouts 1.2
import QtQuick.Window 2.2
import QtTest 1.1

Rectangle {
    id: ueKeypad

    width: ueMainColumnLayout.implicitWidth+2*radius
    height: ueMainColumnLayout.implicitHeight+2*radius

    color: "grey"

    radius: 8

    border.color: "#99c6f0"
    border.width: 4

    ColumnLayout {
        id: ueMainColumnLayout

        anchors.fill: parent
        anchors.margins: radius

        spacing: 4

        RowLayout {
            id: ueTextLayout

            Text {
                id: ueStaffLoginText

                text: qsTr("Staff Login")

                verticalAlignment: Text.AlignVCenter
                horizontalAlignment: Text.AlignHCenter

                font.family: "Padauk"
                textFormat: Text.RichText

                font.pointSize: 16
                font.bold: true

                color: ueKeypad.border.color

                Layout.fillWidth: true
            } …
Run Code Online (Sandbox Code Playgroud)

qt qml qtquick2 qtquickcontrols qtquickextras

2
推荐指数
1
解决办法
4492
查看次数

ComboBox禁用特定索引处的项目

我在一个qml中有一个组合框,TableViewColummn我将其定义如下:

import QtQuick 2.3
import QtQuick.Window 2.2
import QtQuick.Layouts 1.1
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4


ListModel {
    id: comboModel

    ListElement {
        text: ""
        Index: -1
        Dims: -1
    }
}


TableViewColumn {
    id: imageTypeList
    role: "ImageType"
    title: "Image Type"
    width: 100
    delegate: Rectangle {
        ComboBox {
            anchors.verticalCenter: parent.verticalCenter
            anchors.margins: 2
            model: comboModel
            onActivated : {
                console.log(comboModel.get(index).Index)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果有disable一个组合框菜单项可以给出该项目的索引ComboBox.所以,我不想更改底层模型,但实际上只是禁用该项目而不允许用户选择它.

qt qml qtquick2 qtquickcontrols

2
推荐指数
1
解决办法
1601
查看次数

如何在 QtQuick / QML 中创建动画、可变大小的手风琴组件

我想创建一个类似手风琴的动画元素,单击时会展开。这是它应该如何工作的。

手风琴动画

当用户单击红色矩形之一时,作为实际内容的绿色矩形应该展开。我希望这个扩展是动画的。每个红色标题的绿色矩形内容的高度可能不同。

我已经能够实现点击展开行为,但没有动画。这是我目前拥有的代码。

AccordionElement.qml

import QtQuick 2.5
import QtQuick.Layouts 1.1

ColumnLayout {
    id: rootElement

    property string title: ""
    property bool isOpen: false
    default property alias accordionContent: contentPlaceholder.data

    anchors.left: parent.left; anchors.right: parent.right

    // Header element
    Rectangle {
        id: accordionHeader
        color: "red"
        anchors.left: parent.left; anchors.right: parent.right
        height: 50
        MouseArea {
            anchors.fill: parent
            Text {
                text: rootElement.title
                anchors.centerIn: parent
            }
            cursorShape: Qt.PointingHandCursor
            onClicked: {
                rootElement.isOpen = !rootElement.isOpen
            }
        }
    }

    // This will get filled with the content
    ColumnLayout {
        id: contentPlaceholder
        visible: …
Run Code Online (Sandbox Code Playgroud)

user-interface qt qml qt-quick qtquickcontrols

2
推荐指数
1
解决办法
2134
查看次数

如何使用QML StackView?

我是QMl的初学者,在QT C++中使用StackWidget做了更多.在QML中,我很困惑使用stackView并编写了以下代码:

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Stack view")

    MainForm {
        StackView {
            id: stackView
            x: 0
            y: 0
            width: 360
            height: 360

            initialItem: page1

            Rectangle {
                id: page1

                //anchors.fill: parent
                color: "lightgreen"
                Button {
                    id: buttonPage1
                    text: "back to 2"
                    anchors.centerIn: parent
                    onClicked: {
                        stackView.pop()  //**Is THIS CORRECT**
                        stackView.push(page2) //**Is THIS CORRECT**

                    }
                }
                TextEdit {
                    id: te1
                    width: 105
                    height: 40
                    text: "enter"
                }
            }
            Rectangle {
                id: page2

                //anchors.fill: …
Run Code Online (Sandbox Code Playgroud)

qt qml qt-quick qtquick2 qtquickcontrols

2
推荐指数
1
解决办法
5500
查看次数

如何在 QT/QML 中创建共享库

我有 4 个 qml 文件和一个 main.cpp 来加载 qml 文件。我是否可以为这 4 个 qml 文件创建 1 个 dll 文件。并在不同的应用程序中使用它,如果是这样如何做到这一点。

qt qml qt-quick qtquick2 qtquickcontrols

1
推荐指数
1
解决办法
3304
查看次数

如何包含 QtQuickControls

我已经包含在我的项目中:

"import QtQuickQontrols 1.4"

但现在我需要使用 ScrollBar ,为此,我需要包括

"import QtQuickControls 2.2"

但是当我包含 2.2 版本并删除 1.4 时,我的项目被毁了...... MenuBar,TableView 出现错误!好的,当我同时包含这个版本时,它也是错误的!我确实运行了 qmake,并给了我一些建议,我应该怎么做才能实现我的 ScrollBar。我试图添加 ScrollView,但在这里面它不起作用:

     ....
      ScrollBar.vertical: ScrollBar {...} ...}
Run Code Online (Sandbox Code Playgroud)

qt scrollbar scrollview qml qtquickcontrols

1
推荐指数
1
解决办法
44
查看次数