标签: qtquickcontrols

设置FileDialog的默认起始目录

我试图FileDialog在QtQuick中设置一个默认的起始目录,但它不起作用(这意味着它总是打开可执行文件的目录):

property url defPath : "/home/saeid/Work/data";

FileDialog {
    id:dialogPosPath;
    selectFolder: true;
    title: "Please select folder";
    folder: defPath;
    //rest of stuff
Run Code Online (Sandbox Code Playgroud)

但是,如果我将文件夹属性设置为例如folder:shortcuts.home它工作正常!我不明白为什么.

文件说:

当前所选文件夹的路径.在调用open()之前设置此属性将导致文件浏览器最初位于指定的文件夹上.

关闭对话框后,还会更新此属性的值.

默认情况下,网址为空.

知道如何实现这个吗?

qt qml qtquick2 qtwidgets qtquickcontrols

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

QML StackView推送具有属性的组件

在QML StackView 文档中,提到您可以item使用以下属性进行推送:
stackView.push({item: someItem, properties: {fgcolor: "red", bgcolor: "blue"}})

有没有办法可以用属性推动component?我的组件基本上.qml是我的应用程序的不同视图的其他文件的包装器,例如:

Component{
    id: loginComponent
    Login{}//The Login.qml file of my project
}
Run Code Online (Sandbox Code Playgroud)

这就是我正在尝试的:
Main.qml

    ApplicationWindow {
    id: appWindow
    visible: true
    width: Screen.desktopAvailableWidth
    height: Screen.desktopAvailableHeight
    property alias stackv: stackv
    property alias loginComponent: loginCom
        StackView {
        id: stackv
        anchors.top: topHeader.bottom
        anchors.topMargin: 10
        anchors.bottom: parent.bottom
        width: parent.width
        focus: true
            Component {
            id: loginCom
            Login {
                anchors.fill: parent
            }
        }
    }
    }
Run Code Online (Sandbox Code Playgroud)

在另一个QML文件中,它作为组件被推送到stackview,我正在尝试使用按钮的onClick方法之一:

onClicked: {
            appWindow.stackv.push({item: …
Run Code Online (Sandbox Code Playgroud)

qt qml qtquickcontrols

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

正确关闭qml对话框

我一直在玩对话,有些东西困扰着我.

我有以下代码:

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Button {
        id: click
        x: 285
        y: 189
        text: qsTr("Click")
        onClicked: dlgTest.open()
    }

    Dialog{
        id:dlgTest
        visible:false
        contentItem: Rectangle{
            width: 300
            height: 300
            TextField{
                id: tfText
                anchors.top: parent.top
            }
            Button{
                anchors.top: tfText.bottom
                onClicked: dlgTest.close()
                text: "Close"
            }


        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我第一次打开它时,我将一些文本添加到TextField然后关闭它.但是,如果我再次打开它,文本仍将存在.我想要的是当我第一次打开它时(使用空的TextField)将对话框"重置"到它的原始状态.调用方法"close"似乎与将visible变为false完全相同.

有没有办法做这个"重置"?

我有一个其他对话框,有很多控件,很烦人必须手动恢复一切.

qt qml qtquick2 qtquickcontrols

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

QML进度栏未显示在UI上

我有这个QML进度栏:

import QtQuick.Controls 2.0 as QQC20

Item {
    QQC20.ProgressBar {
        id: progressbar_id
        visible: false // even if "true", the progress bar does NOT show up on UI
        from: editorScene.progressbarMin
        to: editorScene.progressbarMax
        value: editorScene.progressbarVal

        onValueChanged: {
            console.log("Progressbar value changed: ", progressbar_id.value)
        }
        onVisibleChanged: {
            console.log("Progressbar visibility chanaged: ", progressbar_id.visible)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以确认进度条的值和可见性已被方法onValueChanged和更改onVisibleChanged

但是,问题在于进度条没有显示在UI上!我实际上如何在UI上显示进度栏?有人可以给我提示吗?

qt qml progress-bar qtquickcontrols

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

在Android中更改按钮的字体大小,同时保留原生状态

我想改变Button的字体大小.我用过这里的解决方案

import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2

Rectangle {
  id: container
  width: 800
  height: 800

  Button {
    id: cmdQuit
    text: qsTr("Quit")
    width: 100
    height: 100
    style: ButtonStyle {
      label: Text {
        renderType: Text.NativeRendering
        verticalAlignment: Text.AlignVCenter
        horizontalAlignment: Text.AlignHCenter
        font.pointSize: 20
        text: cmdQuit.text
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我这样做时,我失去了Android原生外观,并获得了后备基础外观.有没有办法在不丢失Android上的原生样式的情况下更改字体大小?

我想改变单个按钮的外观,并希望其他按钮保持不变.我正在使用Qt5(C++)和QML.我不想要一个涉及复制整个QtQuick/Controls/Styles/Android文件夹的解决方案 - 我可以自己做但是很糟糕

android qml qt5 qtquickcontrols

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

QML TextInput:如何检测用户已在文本字段上完成输入

我是 Qt 和 QML 的新手。我正在使用 QtQuick 2.4。我有TextInput一个在文件中定义了信号的项目,qml如下所示:

import QtQuick 2.4

TextInput {
  text: "Text"
  cursorVisible: true

  signal qmlSignal(string msg)
}
Run Code Online (Sandbox Code Playgroud)

我还有一个与qmlSignal. TextInput我想在用户完成字段输入或关闭 qml 页面以转到应用程序中的另一个页面时触发信号。

实现此所需功能的正确方法是什么?有没有类似的东西onFocusChanged false我可以检测并触发 qml 信号?

我尝试搜索,但无法获得如何在 qml 中执行此操作的示例

qt qml qtquickcontrols

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

标签 统计

qml ×6

qtquickcontrols ×6

qt ×5

qtquick2 ×2

android ×1

progress-bar ×1

qt5 ×1

qtwidgets ×1