QT调用外部程序

QT调用外部程序,第1张

1、通过调用Linux C 函数

    system("calc.exe")

2、通过碧梁QProcess 阻塞调用

    QProcess::execute("calc.exe")/QProcess::startDetached("calc.exe")

3、通过QProcess,非阻塞调用

    QProcess *pro = new QProcess

    pro->start("calc.exe")

注释:

1、前两种方法会阻塞进程,直到计算器程序结束,而第三种方法则不会阻塞进程,可以多任务运行。

2、QT在运行的时候,要启动qws服务尺虚,如果用前两种方法,运行的时候,要新开启一个qws,否则不能运行;而第三种方法,则不需要在开启qws,他和主进程公用一个qws。

3、第三种虽然不会阻塞,但是有可能在终端上看不到打印出来的信息。所以要在终端显示信息,可以考陵慧燃虑阻塞模式。

qt调用更新程序页面变色解决方法如下所示:

只能从弊判代码入手,修改代码,而不是修改标签另外一个方法,右键点击label框体Changestylesheet里面的color,修改成你要的颜指卜咐唯纯色,就是字体的颜色了。

在芦喊界面上拖入QAxWidget,注意这里不建议直接在UI设计界面指定控件,否则可能引起QtCreator崩溃

建议在代码中动态设置,如:

[cpp] view plain copy

ui->axWidget->setControl("Shell.Explorer")

ui->axWidget->dynamicCall("Navigate(QString)", "C:/侍哗正1.html")

当然,上面的"C:/1.html"是我测试的页面

这里的办法是通过IHTMLWindow2接老悔口的execScript方法执行JavaScript函数。可惜的是这个方法不支持函数返回值

[cpp] view plain copy

#include <MsHTML.h>

{

QAxObject *document = ui->axWidget->querySubObject("Document")

IHTMLDocument2 *doc2

document->queryInterface(QUuid(IID_IHTMLDocument2), (void**)&doc2)

if (doc2)

{

IHTMLWindow2 *win2 = nullptr

if (doc2->get_parentWindow(&win2) == S_OK)

{

BSTR s1 = SysAllocString(L"Test()")

BSTR s2 = SysAllocString(L"JavaScript")

VARIANT ret

win2->execScript(s1, s2, &ret)

SysFreeString(s2)

SysFreeString(s1)

}

}

}

JavaScript函数如下

[html] view plain copy

<script language="javascript" type="text/javascript">

function Test()

{

alert("你调用了全局函数Test")

}

</script>


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

原文地址: https://outofmemory.cn/yw/12272269.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存