我目前有一个具有多个按钮的功能性 QT 应用程序。
我需要直接从 javascript 控制我的应用程序,如下例,其中 AccessControl 是我的 QObject 类:
AccessControl.configure("price",10);
AccessControl.configure("autoClose",false);
var ret = AccessControl.sendAskAliveMessage() ;
if(!ret)
{
AccessControl.print("Toll not found");
}
else
{
ret = AccessControl.SendTransactionMessage() ;
if(ret)
{
AccessControl.Open();
wait(10000);
AccessControl.Close();
}
else
{
AccessControl.printError(ret);
}
}
我现有的应用程序像这样连接信号和插槽:
QObject::connect(&w, SIGNAL(SendTransaction()),
&Toll, SLOT(SendTransactionMessage()));
我是 QT 的初学者,我想做的就是让用户可以使用脚本而不是点击 UI。
我已经阅读了QTScript文档,但我确实有些难以理解。
如果有人能向我解释如何去做,或者如果您有一些简单易懂的好例子,那就太好了!
编辑以获取有关我的问题的更多信息:
我的应用程序是一个访问控制模拟器。我有几个按钮用于开门、关门、配置价格…… 我想编写此应用程序的脚本,以便在不存在需要单击 UI 的用户的情况下创建测试每种可能的情况。
谢谢。
最佳答案
您可以将类连接到 JavaScript。这是一个 PySide python 示例。
class MyCLass(object):
@QtCore.Slot(str)
def doSomething(self, info):
# do something with the string info here
frame.addToJavaScriptWindowObject("varName", MyClass)
frame.evaluateJavaScript("varName.doSomething('string')")
我认为这就是您在 C++ 中的做法。这是插槽的链接 http://qt-project.org/doc/qt-4.8/signalsandslots.html . QWebFrame 可以将对象添加到 javascript 并运行 javascript 代码。
class MyClass {
public slots:
void doSomething(String info);
关于javascript - 向现有 QT 应用程序添加 javascript 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20212897/