我试图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()之前设置此属性将导致文件浏览器最初位于指定的文件夹上.
关闭对话框后,还会更新此属性的值.
默认情况下,网址为空.
知道如何实现这个吗?
在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) 我一直在玩对话,有些东西困扰着我.
我有以下代码:
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完全相同.
有没有办法做这个"重置"?
我有一个其他对话框,有很多控件,很烦人必须手动恢复一切.
我有这个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上显示进度栏?有人可以给我提示吗?
我想改变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文件夹的解决方案 - 我可以自己做但是很糟糕
我是 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 中执行此操作的示例