Qt应用程序嵌入浏览器的常用方法

2023-11-09

1.使用QAxObject嵌入微软ActiveX软件

使用QAxObject需要包含Qt模块:
QT +=axcontainer;
注:
1.此方式只针对微软的组件才有效,不可以用来加载第三方的应用程序;
2.获取该组件的相关的API接口文档可以采用以下方式:
QAxObject *pAxobject = new QAxObject(this);
QString strApiDoc = pAxobject->generateDocumentation();

2.使用QWebView加载网页

使用QWebView需要包含Qt模块:
QT += webkits;

需要包含的头文件:
#include <QWebView>
#include <QUrl>
加载web网页:
QWebView *pWebView = new QWebView(this);
pWebView->Load(QUrl::fromUserInput("http://www.baidu.com"));
pWebView->Show();
注:
1.此方式当时在Qt5.6版本和VS编译器版本MSVC 2013_64中测试有效;意味着在一些更高的Qt版本中可能有其它方式替换了该模块。
2.此方式加载的网页在第一次启动时会很缓慢,考虑用户体验等情况,该方式不能作为首选。

3.QWebEngineView加载网页
4.QDesktopServices启动默认浏览器

QDesktopServices::openUrl(QUrl::fromUserInput("http://www.baidu.com"));
注:
1.此方式只能启动Windows系统下设定的默认浏览器,并不能将该网页嵌入到Qt程序中。
2.加载网页的速度快于Qt自己封装的网页加载模块。

5.采用windows的API来启动一个程序
ShellExecute(handle,'open', 'http://www.neu.edu.cn', nil, nil, SW_SHOWNORMAL);  //打开一个网页
ShellExecute(Handle,'open','Explorer.exe',PChar(FOpenFolderName),nil,1) ;  //打开一个文件或程序
   handle:    指定显示位置的父窗口
   operation: 打开方式,参数设为nil 时默认为open , 表示打开由filename 指定的 程序 或者 文件 和文件夹
                           print  表示打印由filename 指定的文件
                           explore 浏览由filename 指定的文件夹
   filename:    指定要操作的 可执行文件名 和  普通文件  和 文件夹   // 为文件或文件夹必须要有完整的路径
   Dir:  当filename 为可执行文件时,指定要操作的路径
   prameter:    若filename 为可执行文件 则 指定其命令参数,若无则为 nil
   showcmd:  1 表示以最大话或最小化 方式显示
6.采用QProcess 来嵌入外部应用程序

==注:==如果采用此方法嵌入的外部程序,无法处理键盘的输入或鼠标操作等事件,可以采用以下方法来解决:

#include<windows.h>
#include<QWindow>
void AttachWinThreadKeyMouseEvent(WId remoteHandle)
{
	DWORD curThreadId = GetCurrentThreadId();  //获取当前线程的ID
	DWORD remoteThreadId = GetWindowThreadProcessId((HWND)remoteThreadId,NULL); //获取要加入到当前线程的外部线程ID
	if (curThreadId != remoteThreadId)
	{
		if (!AttachThreadInput(remoteThreadId, curThreadId, true))
		{
			qErrnoWarning("AttachThreadInput:Error");
		}
	}
}
7.miniblink加载网页

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt应用程序嵌入浏览器的常用方法 的相关文章

  • 如何使 Python、QT 和 Webkit 在无头服务器上工作?

    我有 Debian Linux 服务器 我用它来做各种事情 我希望它能够完成一些我需要定期完成的网络抓取工作 这段代码可以是在这里找到 http bit ly QeqvzX import sys from PyQt4 QtGui impor
  • Qt5和QML:如何使用WebEngine Quick Nano浏览器自动输入用户名和密码

    我正在使用编写一个小应用程序Qt and QML使用 Qt 文档中的示例WebEngine Quick Nano 浏览器 https doc snapshots qt io qt5 5 9 qtwebengine webengine qui
  • 有没有办法向 QListView 添加部分?

    我正在使用 Qt5 2 和 C 来实现一个应用程序 需要显示一个列表 其中包含类似于下面的示例图像的部分 source ngo hung com http www ngo hung com files images contact list
  • 在 Qt 服务器上验证用户身份

    我正在尝试使用 C QtTcpSocket 为个人项目 多人国际象棋游戏 实现身份验证系统 我的朋友建议了一种验证用户的方法 但我想问是否有更简单或更好的方法 来自 Python 背景 做这个项目主要是为了加深对 C 的理解 我将发布我朋友
  • 完全彻底卸载QT Creator

    问题 如何从 Linux 机器上卸载 QT Creator 我的 Debian Jessie 机器上的安装已损坏 我尝试过重新安装 修复等 但没有成功 建议我完全卸载 获取最新版本并重新安装 问题是我不确定如何执行此操作 每次我尝试时 QT
  • QML 中可重用的字体属性[重复]

    这个问题在这里已经有答案了 在 QML 中 我希望能够定义一组字体属性以进行简单的语义重用 例如 代替 Text text This is a header font family Encode Sans weight Font Black
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • 如何在 Qt 应用程序中嵌入 Python 解释器?

    有没有一种简单的方法可以将 Python 解释器嵌入到 Qt 应用程序中 如果可能的话 我希望有一个跨平台的解决方案 这就是目的PythonQt http pythonqt sourceforge net 它支持 Windows Linux
  • Qt中Q_PROPERTY的意义是什么?

    我无法理解 Q PROPERTY 的用法 Q PROPERTY 如何帮助程序具有防御性 它是干什么用的 我看过这个论坛 但确实无法应用 我已经理解了这个例子 但不明白它的用法 这是一个例子 我能从中得到什么 我知道阅读将赋予只读特权 wri
  • Qt中用于线程间通信的类设计

    问题陈述 用相机跟踪物体并相应地移动相机的方位角和仰角 Process 相机获取物体的图像 处理相机的每一帧以查找物体 应该被跟踪 并将每帧中生成的信息传递给机械设备 万向节 以平移和倾斜方式移动摄像机 Design 主 Gui 在一个线程
  • 针对初学者的 QT 商业许可证与非商业许可证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 QT 许可似乎非常反学习 因为据我所知 用它开发的任何东西都只能是商业的当且仅当 its entire开发是在使用商业许可证的情况下完成的
  • 了解 Qt3D 创建的网格

    我创建了一个 Qt3D 网格 如下所示 Qt3DCore QEntity newEntity new Qt3DCore QEntity Qt3DExtras QConeMesh mesh new Qt3DExtras QConeMesh m
  • 无法运行 Qt 应用程序:找不到版本“Qt_5”

    我运行 Ubuntu 16 04 LTS 我的问题是我无法运行可以编译的 Qt5 应用程序 这是我尝试运行它时得到的结果 home user Desktop sconfig dist Release GNU Linux SCongif us
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • 如何向 PyQt5 GUI 添加线程?

    所以我使用 QT Designer 创建了一个 GUI 它工作得很好 但在更复杂的调用中 它不会更新主窗口并锁定 我想运行我的CustomComplexFunction 在根据不断变化的后端信息更新主窗口中的文本编辑时 我希望它每 2 秒运
  • QAbstractItemModel 如何表示树?

    我仍然很难理解 QAbstractItemModel 对项目的表示 有两种返回 QModelIndex 项的方法对我来说没有任何意义 QModelIndex QAbstractItemModel index int row int colu
  • 是否可以根据 QSlider 的位置来改变其手柄的颜色?

    我非常清楚如何通过样式表自定义 QSlider 但我想知道是否可以执行以下操作 我希望滑块的手柄从蓝色变为黄色 当设置在左侧时 它是蓝色的 设置在左侧时 它是蓝色的 当你将它向右移动时 它会出现从蓝色到黄色的渐变 如果可以通过样式表 如何实
  • 使用 QGraphicsScene 和 QGraphicsView 在 Qt 中开始基于 Tile 的游戏

    我将开始在 Qt 中编写基于 2D 图块的游戏 并阅读 QGraphicsScene 和 QGraphicsView 类 这些类旨在显示和处理大量 2D 对象 我的问题是 使用 QGraphicsScene 创建一个包含大量图块的世界是否可
  • 使用 C++ 访问 Azure blob 存储 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • Zmap的原理(回复包校验机制)

    Nmap使用的方法是发送请求然后监听回应 虽然请求可以同步进行 但为了记录每一个未回应请求需要大量开销 导致速度下降 而ZMap使用了不同的方法 它发生的是无状态请求 发送之后就忽略了 它不需要记录未回应请求的名单 而是在发送的数据包中编码
  • java中两个list对象取交集、差集

    在一般操作中 对于list集合取交集 差集 并集 比较简单 网上有很多例子 如 今天我们来说一下对于两个list集合该如何取交集与并集 如下两个集合 groupEntityList saveEntities groupEntityList是
  • JS正则判断多个连续相同字符

    var reg1 w 1 1 g 判断2个连续字符 var reg2 w 1 2 g 判断3个连续字符 var reg3 w 1 1 g 判断3个连续字符 var str aa 123AaAaAAA3 str match reg1 输出 a
  • SpringBoot学习笔记(一):先跑懂再说

    一 Spring Boot 入门 1 Spring Boot 简介 简化Spring应用开发的一个框架 整个Spring技术栈的一个大整合 J2EE开发的一站式解决方案 2 Spring Boot HelloWorld 一个功能 浏览器发送
  • 怎么样才能开期权账户

    为了保护投资者权益 上交所设定了50万的准入门槛 挡着了很多想入手期权交易的小伙伴 如果资金不够50万 那么有什么办法能零门槛参与期权呢 下文给大家介绍怎么样才能开期权账户的知识点 本文来自 期权酱 一 期权开户要什么条件 1 申请开户时保
  • android webview setwebviewclient,android – setWebViewClient和setWebChromeClient之间有什么区别?...

    从 source code Instance of WebViewClient that is the client callback private volatile WebViewClient mWebViewClient Instan
  • OpenCSV web下载csv文件demo

    OpenCSV web下载csv文件demo pom xml
  • 嵌入式Linux&Android开发-LCD屏幕调试

    目录 一 简介 二 开发流程 三 硬件说明 四 电子特性 五 关注启动时序 六 关注引脚 七 屏参适配 7 1 DTS 驱动配置 7 2 屏参配置 案例一 7 3屏参配置 案例二 7 4 屏参配置 案例三 7 5 屏参配置 案例四 7 6
  • 单元测试、集成测试、系统测试、验收测试

    本文是按照开发阶段划分测试技术 单元测试 单元测试是对软件组成单元进行测试 目的是检验软件基本组成单元的正确性 测试对象是软件设计的最小单位 模块 又称为模块测试 单元测试的实质是代码测代码 测试阶段 编码后或者编码前 TDD 编码前属于测
  • 树莓派笔记4:树莓派游戏机

    这次记录比较轻松的内容 将树莓派做成 游戏主机 当然这个主机只是具备模拟器功能而已 可以模拟街机 FC等平台上的游戏 最早要在树莓派上玩模拟器游戏需要手动安装和配置不同的模拟器 而现在国外很多爱好者专门制作了定制化的系统 直接把系统烧到树莓
  • latex插图\begin{minipage}强制左移\hspace命令

    事情是这样的 我在latex中插图 上面一张图是排列整整齐齐的图片 下面一张图就是我绘制的概率密度图 在使用latex插图的时候 因为概率密度图的纵坐标是有title的 所以会显得不整齐 如下图所示 在includegraphics前面添加
  • Inkscape 捕捉图标翻译

  • Docker Portainer 安装与报错处理

    安装docker 管理器 Portainer 最近在看spring cloud alibaba的时候 觉得docker是肯定要用的 然后找了个管理的docker的东东 比较方便的查询docker的情况 直接看操作吧 root localho
  • 分布式锁之redis实现

    docker安装redis 拉取镜像 docker pull redis 6 2 6 查看镜像 启动容器并挂载目录 需要挂在的data和redis conf自行创建即可 docker run restart always d v usr l
  • python字符串的常用方法(3-2)

    目录 一 字符串find 和index 获取某个值的位置方法 二 字符串strip lstrip rstrip左右去空格方法 三 字符串的replace 替换方法 四 字符串bool集合 一 字符串find 和index 获取某个值的位置方
  • vue项目通过directives指令实现vue实现盒子的移动;vue拖拽盒子;vue移动;

    vue项目 点击拖拽盒子 移动盒子 代码可直接复制 注意需要在移动的盒子上添加 v 指令 注意采用固定定位
  • 轻量级调试器神器 - mimikatz

    昨天有朋友发了个法国佬写的神器叫 mimikatz 让我们看下 神器下载地址 mimikatz trunk zip 还有一篇用这个神器直接从 lsass exe 里获取windows处于active状态账号明文密码的文章 http pent
  • 网络与信息安全应急处置预案

    分享一下我老师大神的人工智能教程 零基础 通俗易懂 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 造福人民 实现我们中华民族伟大复兴 为加强北海市电子政务系统的安全 管理 形成科学有效 反
  • jpa自增id(@GeneratedValue和@GenericGenerator)

    一 JPA通用策略生成器 通过annotation来映射hibernate实体的 基于annotation的hibernate主键标识为 Id 其生成规则由 GeneratedValue设定的 这里的 id和 GeneratedValue都
  • Qt应用程序嵌入浏览器的常用方法

    1 使用QAxObject嵌入微软ActiveX软件 使用QAxObject需要包含Qt模块 QT axcontainer 注 1 此方式只针对微软的组件才有效 不可以用来加载第三方的应用程序 2 获取该组件的相关的API接口文档可以采用以