miniblink学习

news2024/11/20 15:35:38

1.基本使用

main.cpp

#include "webwidget.h"
#include <QApplication>
#include "wke.h"
//工作目录是指当前目录,运行目录是指exe所在路径。
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //设置miniblink的全路径+文件名
    wkeSetWkeDllPath(L"miniblink_4975_x32.dll");
    //效果与wkeInit一模一样
    wkeInitialize();

    WebWidget * w=new WebWidget(QString("https://www.baidu.com/"));
    w->show();
    w->onMove();

    int ret=a.exec();

    return ret;
}

webwidget.h

#ifndef WEBWIDGET_H
#define WEBWIDGET_H

#include <QWidget>
#include "wke.h"
namespace Ui {
class WebWidget;
}

class WebWidget : public QWidget
{
    Q_OBJECT

public:
    WebWidget(const QString& url="",QWidget *parent =nullptr);
    ~WebWidget();
    wkeWebView webView;
    void loadUrl(QString& url);//载入url
    void resizeEvent(QResizeEvent *event);//调整大小
    void onMove();
private:
    Ui::WebWidget *ui;
};

#endif // WEBWIDGET_H

webwidget.cpp

#include "webwidget.h"
#include "ui_webwidget.h"
#include <QHBoxLayout>
#include <QDebug>
#include <locale>
#include <iostream>


WebWidget::WebWidget(const QString& url,QWidget *parent) :
    QWidget(parent),
    ui(new Ui::WebWidget)
{
    webView= wkeCreateWebWindow(WKE_WINDOW_TYPE_CONTROL, (HWND)this->winId(), 0, 0, this->width(),this->height());
    wkeShowWindow(webView, TRUE);
    wkeLoadURL(webView,url.toLocal8Bit().data());
}
WebWidget::~WebWidget()
{
    qDebug()<<"in del";
    delete ui;
}
void WebWidget::loadUrl(QString& url)
{
    wkeLoadURL(webView,url.toLocal8Bit().data());
}
void WebWidget::resizeEvent(QResizeEvent *event)
{
    Q_UNUSED(event);
    wkeResize(webView, this->width(),this->height());
    onMove();
}
void WebWidget::onMove()
{
    wkeMoveWindow(webView,0,0,this->width(),this->height());
}


2.如何实现点击链接,执行下载操作呢?

API DOC (miniblink.net)

void wkeOnDownload(wkeWebView webView, wkeDownloadCallback callback, void* param)

 页面下载事件回调。点击某些链接,触发下载会调用。

wkeOnDownload2(webView, onDownloadCallback, nullptr);

点击下载链接,调用onDownloadCallback函数

自定义onDownloadCallback函数,只需要返回值和函数参数与

wkeDownloadCallback函数类型保持一致即可

static wkeDownloadOpt WKE_CALL_TYPE onDownloadCallback(wkeWebView webView,
    void* param,
    size_t expectedContentLength,
    const char* url,
    const char* mime,
    const char* disposition,
    wkeNetJob job,
    wkeNetJobDataBind* dataBind)

开启新世界的大门啦!

3.bool wkeCanGoBack(wkeWebView webView)

页面是否可以后退

4.什么是UTF-8编码?写给计算机爱好者 - 知乎 (zhihu.com)

UTF-8:Unicode Transformation Format -8 bits

ASCII:每个字符有一个字节,可以有256个字符。

Unicode:是现在编码所有人类语言的通用标准,甚至包括表情符号。

但,它本身不会以二进制形式存储单词。计算机需要一种方法将

Unicode转换为代码。而UTF-8就是Unicode的编码系统。

它以一字节单位表示字符。

UTF-8将Unicode中的单个字符转换为1到4个字节的集合。

c++ string/char* 字符编码转换 (utf8,chs,gbk...)_c++ utf8_aworkholic的博客-CSDN博客

5.已有const wkeString url;

   希望得到char类型的url;

 直接使用:wkeGetString(url);

    函数原型:const utf8* wkeGetString(const wkeString s);

    而typedef char utf8;

                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094709.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# GFPGAN 图像修复

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace 图像修复 {pu…

leetcode-62.不同路径

1. 题目 2. 解答 dp[i][j]表示机器人位于第i&#xff0c;j位置的时候&#xff0c;有多少路径 如果i 0&#xff0c;dp[i][j] 1;如果j 0&#xff0c;dp[i][j] 1;其他情况dp[i][j] dp[i-1][j] dp[i][j - 1] #include <stdio.h>int solve(int m, int n) {int dp[m][…

一场直播脚本的策划及话术怎么写?

一场直播脚本的策划及话术参考 直播流程安排示范:120 分钟直播流程设计(过款型) 标准化直播话术单元(单款产品话术模板) I 直播 120 分钟标准化流程 I 分解为 4 个 30 分钟直播单元 I 30 分钟前期介绍 2-3 个款作为起步 每款持续时长 10 分钟,10 分钟的时间里 ①卖点引出 2 …

找不到msvcp100.dll无法继续执行此代码怎么解决,快速修复dll问题的5个方法

电脑已经成为我们生活和工作中不可或缺的一部分&#xff0c;在我们使用电脑的时候&#xff0c;总会遇到一些技术问题&#xff0c;其中之一就是“找不到msvcp100.dll”。msvcp100.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2010 Redistributable Package的一部…

G.711语音编解码器详解

语音编解码利用人听觉上的冗余对语音信息进行压缩从而达到节省带宽的目的。值得注意的是,本文说的是语音编解码器,也就Speech codec,而常用的还有另一种编解码器称作音频编解码器,英文是Audio codec,它们的区别如下。 以前在学校的时候研究了很多VoIP的编解码器从G.723到A…

java.sql.SQLFeatureNotSupportedException解决方法

使用MyBatis访问数据库查询数据时报错&#xff1a; Caused by: java.sql.SQLFeatureNotSupportedExceptionat com.alibaba.druid.pool.DruidPooledResultSet.getObject(DruidPooledResultSet.java:1771)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun…

在node中操作mysql数据库

目录 前言 在node中安装mysql模块 引入绑定数据库 验证mysql模块能否正常工作 增 便捷方式 改 便捷方式 删 查 前言 本文介绍在node中对数据库使用sql语句进行增删改查 在node中安装mysql模块 npm i mysql 引入绑定数据库 导入mysql模块 const mysql require(m…

2、Windows下安装

目录 一.安装 1、双击下载的程序&#xff1a; 2、加载完成后&#xff0c;会进入如下界面&#xff08;选第一个Developer Default&#xff09; 3、然后点击Next 点击Execute 然后Next 4.继续next注意端口为3306 5.继续next&#xff0c;输入账户密码&#xff08;要有大小写…

C# 图解教程 第5版 —— 第4章 类型、存储和变量

文章目录 4.1 C# 程序是一组类型声明4.2 类型是一种模板&#xff08;*&#xff09;4.3 实例化类型4.4 数据成员和函数成员4.5 预定义类型4.6 用户定义类型4.7 堆和栈&#xff08;*&#xff09;4.8 值类型和引用类型4.9 变量4.9.1 变量声明4.9.2 多变量声明&#xff08;*&#x…

“视频剪辑:如何分割与转换视频格式,一探究竟!

如今&#xff0c;视频已成为我们生活中不可或缺的一部分。无论是记录生活点滴、分享兴趣爱好&#xff0c;还是传递信息&#xff0c;视频都已经成为一种非常有效的表达方式。而在视频制作过程中&#xff0c;剪辑是至关重要的一环。通过剪辑&#xff0c;我们可以去掉不需要的内容…

[23] T^3Bench: Benchmarking Current Progress in Text-to-3D Generation

3D生成蓬勃发展&#xff0c;主流方法通过事例比较和用户调查来评价方法好坏&#xff0c;缺少客观比较指标&#xff1b;本文提出Bench&#xff0c;首次综合比较了不同生成方法&#xff1b;具体来说&#xff0c;本文设计了质量评估&#xff08;Quality Assessment&#xff09;和对…

nginx优化和防盗链

nginx优化 1.nginx隐藏版本号 因为是一个高性能&#xff0c;轻量级的工具吗&#xff0c;更新版本速度很快&#xff0c;功能很强大但是BUG很多&#xff0c;很容易被攻破&#xff0c;所以需要隐藏版本号来减少服务器被攻击的威胁。 隐藏版本号的第一步就是如何查看版本号 curl …

蓝桥杯每日一题2023.10.15

数列求值 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 我们发现如果一项一项相加会造成结果过大从而答案错误&#xff0c;所以我们每次只需要取后四位经行计算即可 #include<bits/stdc.h> using namespace std; int a[20190329]; int main() {a[1] 1, a[2] 1, a[3]…

Flutter 剪裁(Clip)

&#x1f525; ClipOval &#x1f525; 子组件为正方形时剪裁成内贴圆形&#xff1b;为矩形时&#xff0c;剪裁成内贴椭圆 裁剪纯色背景 ClipOval(child: Container(width: 300.w,height: 300.w,decoration: const BoxDecoration(color: Colors.red),),), 裁剪背景图片 裁剪前…

17.SpringBoot前后端分离项目之简要配置二

如何配置前端请求和后端响应&#xff08;2&#xff09; 登录接口 前端&#xff1a; 后端控制器&#xff1a; 在My3Controller RequestMapping("/login") public ResponseBody RestObject login(RequestBody UserUI userUI){System.out.println("login方法&…

Linux第六章-Vi和Vim编辑器

vi和vim的基本介绍 Linux系统会内置vi文本编辑器 vim具有程序编辑的能力&#xff0c;可以看做是vi的增强版本。 vi和vim的三种模式 正常模式 以vim打开一个档案就直接进入一般模式了&#xff08;这是默认的模式&#xff09;。在这个模式中&#xff0c;可以使用上下键来移动…

模拟实现字符串函数(5): strncpy

1.函数介绍 拷贝num个字符从源字符串到目标空间。 如果源字符串的长度小于num&#xff0c;则拷贝完源字符串之后&#xff0c;在目标的后边追加0&#xff0c;直到num个 strncpy与strcpy的作用是一样的&#xff0c;区别在于strncpy指定了复制字符的个数。 2.思路分析 这里多了…

管理系统搭建一般步骤(会话跟踪 路由导航守卫 响应拦截器)

1&#xff0c;vue-cli进行项目搭建 2&#xff0c;使用ELement-UI 3&#xff0c;使用vue组件路由 4&#xff0c;点击登录&#xff0c;向后端进行账号密码比对 三种情况&#xff1a; 密码有误 服务器忙 密码正确。 具体步骤&#xff1a; 首先写好前端一个大体框架&#xf…

深度强化学习第 1 章 机器学习基础

1.1线性模型 线性模型&#xff08;linear models&#xff09;是一类最简单的有监督机器学习模型&#xff0c;常被用于简单的机 器学习任务。可以将线性模型视为单层的神经网络。本节讨论线性回归、逻辑斯蒂回归&#xff08;logistic regression&#xff09;、 softmax 分类器等…