C++与QML编写Lua的简易集成开发环境(三)

C++与QML编写Lua的简易集成开发环境(三),第1张

        承接上篇文章,现在已经解决了昨天的问题,通过能够直接打开其他.lua文件,并将内容显示到代码区,不再需要选择两次。


主要错误在于fileDialog1的触发信号中,在触发后读取文件的路径已经发生改变,file.source和file.text确实发生了改变,但是并没有及时将file.text的值赋给t1.text(也就是TextEdit区域的文本),导致显示内容仍为上一个文件的内容。


        因此我在fileDialog1触发条件中的修改文件来源后直接修改TextEdit中的内容,使其显示更改文件源后的内容,代码如下:

FileDialog {
    id: fileDialog1
    folder: StandardPaths.standardLocations(StandardPaths.DesktopLocation)[0] //默认打开桌面文件夹
    fileMode: FileDialog.OpenFile              
    options: FileDialog.ReadOnly
    onAccepted: {
        wenjian.changeurl(fileDialog1)
        console.log(file.source)
        t1.text=file.text
    }
}

        在此基础上,我还实现了另存为的功能,代码如下:

function savebyurl(FileDialog){
    wenjian.midurl=(fileDialog2.file).toString();
    var mid2=(wenjian.midurl).toString()
    var savebyurl1=mid2.substring(8);
    savefile.source=savebyurl1
}

FileDialog {
    id: fileDialog2
    folder: StandardPaths.standardLocations(StandardPaths.DesktopLocation)[0] //默认打开桌面文件夹
    options: FileDialog.SaveFile
    onAccepted: {
        wenjian.savebyurl(fileDialog2)
        savefile.text=t1.text
}

        今天余下的时间都花在实现qt项目引入lua,但是出现了一些问题。


我上网查到第一种方法是使用LuaBridge,引入相应的头文件就能够调用Lua。


第二种方法是先将源码中除lua.c和luac.c加入空项目,创建静态链接库。


步骤如下:

        QT -> 文件 -> 新建文件或项目 -> Library -> c++库,d出的窗口中选择类型为”静态链接库“(非必须),输入自定义的项目名,点下一步,直到完成。


然后删除自动生成的两个源文件和头文件。


在左侧的目录树中,右击工程名,选择->添加现有文件,然后选择我们前面下载的src文件夹中的所有文件,除了lua.c和luac.c(不知道makefile需不需要加入,还在研究)。


然后选择release模式,右击项目名,选择->构建,这样就能在release文件中生成一个.a文件。


        然而在生成链接库时只生成了.a文件,但是我上网查到一些资料,上面说需要生产.dll和.a文件。


还在尝试,未来几天应该是不写文了,最晚到下周三看一下能不能实现调试功能,然后再利用hook函数进行断点和单步调试的编写。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/562694.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存