找回密码
 立即注册
收起左侧

第一次用qml就碰上问题

4
回复
6747
查看
[复制链接]

尚未签到

来源: 2016-2-18 10:44:37 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 gtdc87 于 2016-2-18 10:47 编辑

刚开始学qml,写了个最简单的例子,但是执行失败。大家帮我看看原因吧。

1. 新建一个qml application
2. 里面只有一个main.qml,没有MainForm.ui.qml,这是第一个疑问。
内容如下:
import QtQuick 2.3
import QtQuick.Controls 1.4
import QtQuick.Window 2.2

Window {
    width: 640
    height: 480
    visible: true
    color: "gray"

    Button {
        id: btn
        text: qsTr("Press me")
        anchors.centerIn: parent
        onClicked: msg_dlg.open();
    }
}


3. 新建一个qml文件,文件名为SettingDlg.qml。
内容如下:
import QtQuick 2.0
import QtQuick.Dialogs 1.2

Item {

    property alias msg_dlg: msgdlg

    MessageDialog {
        id: msgdlg
        title: qsTr("Attention")
        text: qsTr("Hello world!")
        onAccepted: console.log(qsTr("clicked..."))
    }
}
4. 运行起来,点击按钮,提示qrc:/main.qml:15: ReferenceError: msg_dlg is not defined
不知道这个属性别名有什么问题,大家帮忙看看。


回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2016-2-18 13:10:07 显示全部楼层
msg_dlg这个没有声明啊,程序不知道是什么鬼。你这个msg_dlg是不是放在了MainForm.ui.qml里面声明了?
回复

使用道具 举报

尚未签到

2016-2-18 13:50:42 显示全部楼层
我新建的qt quick application没有MainForm.ui.qml这个文件,我把msg_dlg放在我自己写的qml中,是个属性别名。
回复

使用道具 举报

尚未签到

2016-2-18 20:16:06 显示全部楼层
二楼请不要误导别人。。。。。。。。。。

main.qml 里面要加上这个:
  1. SettingDlg {
  2.   id: setting
  3. }

  4. //然后onclicked 里面
  5. setting.msg_dlg.open()
复制代码
回复

使用道具 举报

累计签到:1569 天
连续签到:1 天
2016-2-19 08:18:10 显示全部楼层
如楼上所说,需要使用SettingDlg.qml的文件名作为组件名进行使用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了