Qt 预期字符 ')' 错误

Posted

技术标签:

【中文标题】Qt 预期字符 \')\' 错误【英文标题】:Qt Expected Character ')' ErrorQt 预期字符 ')' 错误 【发布时间】:2015-03-24 21:02:34 【问题描述】:

我收到以下错误:

调试开始 QML 调试已启用。只能在保险箱中使用它 环境。 QML 调试器:等待端口 55186 上的连接... QQmlApplicationEngine 未能加载组件 qrc:/main.qml:23 预期的令牌`)'

第 23 行

QFile, file("C://new.txt");

代码

#include <QIODevice>
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2
import QtQml 2.2



ApplicationWindow 
    title: qsTr("File Editor")
    width: 640
    height: 480
    visible: true

    menuBar: MenuBar 
        Menu 
            title: qsTr("&File")
           MenuItem 
                text: qsTr("&Open")
                onTriggered: 
                    var message = ("Hello World!");
                    QFile, file("C://new.txt");
                    file.open(QIODevice::ReadWrite);
                    QTextStream out(&file);
                    out << %message%;
                
                
            MenuItem 
                text: qsTr("E&xit")
                onTriggered: Qt.quit();
            
        
    

    MainForm 
        anchors.fill: parent
        button1.onClicked: messageDialog.show(qsTr("Button 1 pressed"))
        button2.onClicked: messageDialog.show(qsTr("Button 2 pressed"))
        button3.onClicked: messageDialog.show(qsTr("Button 3 pressed"))
    

    MessageDialog 
        id: messageDialog
        title: qsTr("May I have your attention, please?")

        function show(caption) 
            messageDialog.text = caption;
            messageDialog.open();
        
    

【问题讨论】:

我猜'C://new.txt' 应该是"C://new.txt" 你为什么//?转义字符是 \\ 所以也许你指的是QFile, file("C:\\new.txt"); 而不是QFile, file('C://new.txt');?所以我说的是 \\ 和 "。更重要的是,正如@SimonWarta 所说,您不能将C++ 代码与QML 混合使用... 您正在混合 QML 代码和 C++ 代码。那是行不通的。如果您需要其他帮助,请先正确格式化您粘贴的代码(在粘贴到 Stack Overflow 之前,在每行前面添加 4 个空格)。否则别人读起来太难了。 QML 中的信号处理程序只接受 javascript 代码,不接受C++ 代码。您可以为此调用 C++ 方法(SLOTQ_INVOKABLE)或 create a custom QML type。 【参考方案1】:

正如 cmets 中的 Simon Warta 和 BaCaRoZzo 所述,您不能在 QML 中使用 C++。您需要使用 Javascript 并创建自己的自定义类型来处理文件输入和输出。

请看这个answer。

【讨论】:

以上是关于Qt 预期字符 ')' 错误的主要内容,如果未能解决你的问题,请参考以下文章

Scala REPL:错误:';'预期但找到字符串文字

错误:预期颜色但得到(原始字符串)颜色/灰色

错误:预期的颜色,但得到(原始字符串)颜色/灰色

错误:类型不匹配:推断类型是字符串?但布尔值是预期的

类型错误:序列项 0:预期字符串,找到无类型

引导折叠错误:SyntaxError:字符串与预期的模式不匹配