gpt4 book ai didi

c++ - 在我的主窗体之外使用 QtScript

转载 作者:行者123 更新时间:2023-11-30 03:57:33 25 4
gpt4 key购买 nike

我正在使用 Qt5,并尝试学习如何使应用程序可编写脚本。

为此,我创建了一个包含一些文本编辑标签等的主窗口。然后我添加了一个名为“脚本控制台”的选项”到该表单的菜单,以便我打开第二个表单,其中仅包含一个文本编辑和一个名为“评估”的按钮

我的目标是能够使用第二种形式并通过 Qt 脚本引擎 能够设置或从我的主要形式获取值,并且通常能够编写各种函数的脚本。

我尝试做的是像这样设置引擎

scriptingconsole::scriptingconsole(QWidget *parent) :
QDialog(parent),
ui(new Ui::scriptingconsole)
{
ui->setupUi(this);
QScriptValue appContext = myScriptEngine.newQObject(parent);
myScriptEngine.globalObject().setProperty("app", appContext);
}

虽然我没有得到我所期待的。

如果我尝试计算表达式“app”,我会得到 null 作为输出。

如果我将 myScriptEngine.newQObject(parent) 与当前类中的对象一起使用(如果我输入的不是 parent 而不是 this),但我也希望能够访问其他类中的对象(希望我的应用程序通常使用的所有公共(public)插槽)。

有谁知道我在这里做错了什么以及如何使用我的脚本控制台从我的主窗口访问公共(public)插槽的类?

最佳答案

怎么了?

我猜这是因为您没有明确地将指向主窗体的指针传递给 scriptingconsole 的构造函数。这就是您得到 NULL 的原因。 (NULL 是默认值,您可以在每个 QWidget 构造函数中看到 QWidget *parent = 0)

如果您的对象未动态实例化,就会发生这种情况。

解决方案

在您的主窗体中动态分配 scriptingconsole:

scriptingconsole* myScriptConsole;

//...

myScriptConsole = new scriptingconsole(this);
// ^^^^
// pass the pointer which points to parent widget

关于c++ - 在我的主窗体之外使用 QtScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27902070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com