2、在d出的对话框中,选择要导入的qt脚本文件;
3、点击“确定”按钮,即可完成qt脚本的导入。
等待输入中
我们首先来看看QtCreator能不能编辑运行python脚本。可以看到新建项目的选项里并没有python相关的选项,看了并不能用QtCreator来管理python项目。
我们来看看另一个方面,看看QtCreator能不能创建编辑python的相关文件吧。
可以看到,有python的相关选项,点击左侧的Python标签,在中间部分可以看到有Python class和Python file两个选项。
这里我们选择Python file,然后点击choose按钮。然后在名称一栏输入qtpythondemo,然后点击下一步。再点击完成,就进入到编辑界面了。我们来看看情况。
可以看到确实可以编辑python脚本文件。
我们来看看能否运行该脚本,在脚本里输入:
print("hello world")
可是我们发现调试菜单,以及界面左下角的运行等按钮都是灰色的,显然用不了。
如果,QtCreator只能进行编辑的话,还不如直接使用IDLE来的方便,或者任何一个功能稍强大的文本编辑器更好,这样岂不是很鸡肋。
下面,我们给QtCreator添加上执行python脚本的功能。
点击,工具菜单,选项打开选项窗口。
点击界面左侧的 环境,右侧选择 外部工具 标签,再点击下面的 添加 按钮,先选择 添加目录 ,然后将新类别修改为RunPy,这个你可以自己取。
点击选中RunPy,然后再点击 添加 按钮,选择 添加工具。这时右侧的灰色区域就处于可编辑状态了。当然新工具也要命名,就用Python3吧。
下面,我们需要对右侧的内容进行编辑设置。具体如下:
1、说明:可以是任何你喜欢的内容,这里我们输入“运行编辑的Python3脚本”
2、执行档:就是python的可执行文件路径,我的是C:\Python34\python.exe
3、参数:输入 %{CurrentDocument:FilePath}
4、工作目录:%{CurrentDocument:Path}
5、Environment:QT_LOGGING_TO_CONSOLE=1
其他的默认即可。上面带有%的是QtCreator的内置环境变量而已,当我们选中某个文本框时,可以看到文本框右侧有个ABC字母的按钮,点开后可以看到很多环境变量列表。
最后,点击Apply和OK即可。
我们来看看配置完成后的情况。
好了,配置完成后,我们来看看怎么运行。
可是调试菜单和左下角的按钮还是灰色呀,没关系。我们刚才是在外部工具的标签页里添加的设置,那就去外部工具找找吧。
我们看到了 外部-RunPy-Python3 正是我们刚刚设置的。
点击Python3看看有什么会发生。
我们看到,界面下方d出了 概要信息 窗口,里面正是上面 python 脚本的输出。YES!我们成功了!
使用Webkit library (可以说是纯QT实现)代码量不多,直接贴代码 (读起来一点不痛苦的) :
myWebView = new QWebView(this)//this 是main window widget, myWebView 是它的成员变量
myWebView->page()->settings()->setAttribute(QWebSettings::JavascriptEnabled, true)
myWebView->page()->settings()->setAttribute(QWebSettings::PluginsEnabled,true)
myWebView->page()->mainFrame()->addToJavaScriptWindowObject("mainWindowObject", this)//html页面中,可以通过"mainWindowObject"这个对象名访问主控件中的方法 (slot)
setCentralWidget(myWebView)
myWebView->setUrl( xxx )//xxx是你的url或本地html路径
//. . .
class MainWindow : public QMainWindow
{
//. . .
public slots:
void CPlusPlusFunction(const QString&str) //这个函数是将被JavaScript调用的
{
myWebView->page()->mainFrame()->uateJavaScript( QObject::tr("jsFunction('Popup Dialog')") )
}
}
HTML文件内容如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />
<title>myjstest</title>
<script language="JavaScript" type="text/javascript">
function jsFunction(values) //this function will be called from C++ codes
{
alert(values)
}
function test()
{
mainWindowObject.CPlusPlusFunction( "calling C++ function from javaScript" )
}
</script>
</head>
<body>
<div id="dest"></div><form action="" method="post">
<input type="button" name="" value="myTest" onclick="test()" />
</form>
</body>
</html>
这种方法,使用Webkit作为浏览器,如果你的页面使用了ActiveX控件(比如google earth插件),则不能正常工作。
这种情况下,你需要放弃Webkit,在主程序中调用IE 控件(WebBrowser Control)作为浏览器。(但是这样也失去了跨平台的支持,因为IE只能在Wndosw上跑。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)