问题标签 [qtscript]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 在 Qt 脚本中获取“破坏”信号
如何destroyed
从 Qt Script 正确连接到 QObject 的信号?
当我像连接到您的平均信号一样连接它时,它不起作用。我确实测试了我删除了该对象并且其他 QObjects 确实收到了信号,但是我连接到它的脚本函数没有被调用。
以下是我用于测试的示例。最重要的部分是行:
我希望它在obj
被销毁时调用该函数。下面的代码确保在甚至循环已经开始时删除对象,并且它还测试对象确实向destroyed
另一个 QObject 发送信号。我要修复的是脚本在发出信号debug("obj destroyed")
后调用脚本函数。destroyed
ScriptTester.h:
ScriptTester.cpp:
请注意,我不想要像destroyed
首先传递给 C++ 代码然后手动或通过信号通知脚本那样的黑客攻击。我正在寻找一个完全在脚本中完成的实现。
c++ - QtScript 与 QJSEngine 何时使用一个或另一个?
我必须在 C++ 应用程序中运行一系列 javascript“脚本”。其中大部分是重复动作。这里的代码示例。
我知道 Qt,因为版本 5 包含 2 个 javascript 引擎:QtScript 和 QJSEngine。
我的问题是我们应该在哪些情况下使用一种或另一种?哪个表现更好,在哪些情况下?
javascript - QScriptEngineAgent - 获取被调用者名称
我试图通过捕获函数入口和出口来实现一个简单的QtScript性能分析器。QScriptEngineAgent
我成功订阅了QScriptEngineAgent::functionEntry()
回调。现在,是否可以在此回调中获取正在调用的函数的名称(作为字符串)?
尽管我知道并非所有脚本函数都需要有一个名称,即使在最简单的情况下它似乎也不起作用。QScriptContextInfo
为此提供了便利,但它似乎失败了。然后我试图获得arguments.callee.name
财产的价值,但它也失败了。
这是我尝试实现它的粗略概述,我试图在 qt-5.3.2/linux 上运行它。
tmp.pro
:
main.cpp
:
输出样本,我不满意,因为我希望看到“foo”和“bar”而不是一些空字符串:
qt - 如何为 Qt 应用程序生成文档截图?
在没有人工干预的情况下,我想生成 Qt 桌面应用程序的屏幕截图。屏幕截图应在make documentation
发出 make 目标时生成。所以在源代码树中没有包含屏幕截图的 PNG 文件,而是有如何生成它们的自动说明。
生成屏幕截图的一个优点是文档将始终保持准确。它将解决 Qt 小部件的视觉外观可能随时间变化的问题。另一个优点是可以创建不同 Qt 样式的屏幕截图。通过使用
QApplication::setStyle()或使用-style
命令行选项启动应用程序来选择 Qt 样式。
我想有两种方法可以实现我的目标。
记录使应用程序进入截屏状态所需的所有鼠标事件和击键。
使 Qt 应用程序可编写脚本,并编写一个脚本使应用程序进入截屏状态
是否有任何第三方软件可以自动化第一种方法?我应该将 QtScript 用于第二种方法吗?还有其他方法可以实现我的目标吗?是否有任何开源 Qt 应用程序可以在其构建系统中生成其文档截图?
c++ - 如何使用 QTextEdit 模拟类似 shell 的脚本环境?
[目标]
一个简单的 shell 提示符QTextEdit
,或任何其他适当的 Qt 方式。
(QScriptEngine
假设使用 ECMA 脚本解释器)
[例子]
MATLAB
Python
在 shell 提示符下,命令行部分是可编辑的,而其他部分则不是。对于 MATLAB,只有最后一行之后的行>>
是可编辑的;对于 Python shell,只有最后一行>>>
是可编辑的。
[解决方法]
这是我脑海中出现的第一个想法:
用作QTextEdit
只读和QLineEdit
命令条目。出于纯功能的目的,它是可以接受的,但还不够好。
[问题]
实际上可以在这里找到相同的问题:Implementing a GUI Shell in qt,并且接受的答案与此解决方法相同。就像我说的那样,解决方法还不够好。我想知道是否可以用 Qt 模拟 shell 提示?目前,QTextEdit
似乎是最好的开始。
欢迎任何想法。代码也是受欢迎的,但不是必需的,我需要的只是一些提示和方向。
c++ - 访问 QScriptEngine 在堆上创建的值?
[问题]
假设我们QScriptEngine
使用以下脚本进行输入:
通过QScriptEngine::evaluate()
,我们将得到一个QScriptValue
返回值,它可以转换回int
等于 3。
另一方面,如果我们QScriptEngine
输入脚本:
那么我们如何访问堆上脚本的值foo
和bar
创建的值呢?
[例子]
以MATLAB(Python IDLE同理)为例。我可以读取脚本文件,并且脚本创建的变量仍可用于命令提示符。
我正在考虑在 Qt 中做同样的事情:
- 读取脚本文件到
QString
- 调用
QScriptEngine::evaluate()
评估QString
但我不知道如何获得var
由脚本创建的那些。
PS该脚本可能非常复杂,而不仅仅是竞争变量,我只是尝试使问题更简单。
javascript - LESS - 使用 Qt 获取 CSS
我是javascript的新手,所以也许我的问题很愚蠢。我想使用 LESS 创建 CSS 文件。我想从我的 C++ 代码中做到这一点。所以我正在使用 Qt 和 QtScript。
1) 我可以使用 QScriptEngine 在 c++ 中执行 less.js。2) 我研究了less.js 并找到loadInitialFileCallback(loadedFile)
了将我想要处理的文件内容作为参数的函数。*.less
所以我可以用我的文件内容从我的 c++ 代码中调用这个函数。
之后我会得到一些东西(我认为它必须是 CSS 文件)。但我不知道在哪里可以找到我的 CSS 文件(也许它可以在 less.js 或其他东西中可变)。另外我不知道如何提取我的 CSS 文件的内容。谢谢你的帮助:)
c++ - C++ 对象的 Qt 脚本析构函数
我有一个 a 的子类QObject
,我已经可以在 QtScript 中使用var x = new Test();
我制作了一个构造函数并使用它注册它QScriptEngine::newFunction
,QScriptEngine::newQMetaObject
如下所示:
我自己管理对象的生命周期(指向对象的指针存储在 Test 的静态成员中)。
如何delete x;
在QtScript
delete
底层 C++ 对象中创建?我知道x.deleteLater();
(slot from QObject
) 但我不能使用它。
qt - qtscript 引擎 - 进行系统调用
我在应用程序中使用 qtscript 为应用程序中的各种功能提供自动化功能。
为了允许更大的灵活性,我需要能够从脚本执行其他工具(命令行命令/应用程序)并获取它们的输出(应用程序本身与安全无关 - 因此调用随机代码可能是可以的)。
他们是用基本的 qtscript 模块或封装这个的一些 3rd 方类来做到这一点的方法,还是我必须自己做这个?
c++ - 不调用自己类的Qt脚本析构函数
我正在使用 qtscript4 并向引擎添加了一些类型。
我注册了一个创建新对象的函数,并将其注册到引擎上,并将所有权传递给引擎。但是该对象似乎没有被破坏然后离开范围(至少调试器不会在析构函数处中断)。
以下几行类似于注册:
ObjectConstruction<T>::constructMyObject
如下所示:
除了破坏之外,整个事情似乎都起作用了。所以我认为初始注册似乎是正确的。每次我var c = new MyObj;
在代码中有 a 时也会调用构造函数,但如果超出范围则不会发生任何事情。然而,析构函数在应用程序退出时被调用。也许javascript对“超出范围”有不同的看法。但是我的对象实例化是在函数范围内,所以我希望它们在函数结束时被销毁;
我希望有人有任何提示或建议。提前致谢。