标签: qtwebkit

如何在QWebView中获取Javascript来创建基于C++的类的新实例?

我已经使用addToJavaScriptWindowObject成功地将C++对象添加到QWebFrame,并且可以从javascript调用该对象上的插槽.

但我真正想做的是让其中一个插槽返回一个新对象.例如,我有一个这样的插槽,它返回一个QObject派生类实例:

   MyObject* MyApp::helloWorld()
   {
          //MyObject is dervied from QObject
          return new MyObject();
   }
Run Code Online (Sandbox Code Playgroud)

我可以像这样从javascript成功调用这个插槽

   var foo=myapp.helloWorld();
Run Code Online (Sandbox Code Playgroud)

但是foo似乎是空的,我不能通过Javascript调用任何插槽或访问它的任何属性.

有关如何实现这一目标的任何想法?

javascript qt webkit qtwebkit

6
推荐指数
1
解决办法
7068
查看次数

在Qt中将C++对象暴露给Javascript

有没有什么方法可以将Q ++对象/函数公开给在Qt中的QtWebKit浏览器中运行的JavaScript?可以将ActionScript对象暴露给在Adobe AIR中的WebKit浏览器内运行的JS代码 - 我正在Qt中寻找类似的功能.

javascript c++ qt qtwebkit

6
推荐指数
1
解决办法
5653
查看次数

如何通过Qt创建Web服务

我正在寻找一个工具或插件来帮助我创建Web服务,就像DOT NET为Linux做的那样.

c++ qt web-services qtwebkit

6
推荐指数
1
解决办法
8608
查看次数

为什么QTWebKit远远落后于Google Chrome(Chromium)

我使用了QtWebKit的最新版本,即版本2.2.但我必须说它远不及目前的铬释放量.它缺少很多CSS属性,缺少抗锯齿,它使旋转的图片变得难看,文本的选择很好地用铬实现,它在页面缩放上缩小了很多,仅举几例.

  1. 谷歌贡献给webkit源多少钱?

  2. 是否可以在Qt中使用chrome版本的webkit?

  3. 如何解决这个问题,并确保我的Web应用程序将像Chromium中呈现的那样呈现奇妙的效果?

  4. 如何在源代码中出现这种差异?

standards qt google-chrome qtwebkit chromium

6
推荐指数
1
解决办法
2554
查看次数

如何在QtWebKit中获得第一个重定向(301或302)事件

我们正在使用QtWebKit 4.7并想知道帧加载何时进行重定向.

目前我们在QNetworkAccessManager的子类中计算传出请求,我们在其中覆盖createRequest.

这在大多数情况下都很好用,但是当第一个响应是301或302(重定向)时,它会在某处被吞噬.

我们只需要通过以下方式请求网址:

QNetworkRequest request(QUrl("http://www.twitter.com")); // 301 to twitter.com
frame->load(request);
Run Code Online (Sandbox Code Playgroud)

qt qtwebkit qwebkit http-status-code-302 qt4.7

6
推荐指数
2
解决办法
3895
查看次数

在QtWebKit中显示阿拉伯字体

我用QtWebkit编写了一个程序.我在此应用程序中使用了阿拉伯字体 但是如下所示的文本不适用.是否有解决方案来修复它? 在QtWebkit中显示的文本不适用:http://www.shiaupload.ir/images/47343138299124526783.jpg 显示的文字不适用:

这里有一个示例代码

HTML代码:{

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html>
 <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 </head>


<style>
/*Twe Arabic font for test:*/
@font-face {
        font-family: '__me_quran';
        src: url(me_quran.ttf) format('truetype');
    }
@font-face {
        font-family: '__traditionalArabic';
        src: url(trado.ttf) format('truetype');
    }
 #para1
{
 font-family :/*__me_quran*/__traditionalArabic;
 text-align : justify;/*In this project i need justify alinement*/
 direction:rtl;
}


</style>
<script type="text/javascript" >
    var step=1;
    function plusZoom1(){
        document.getElementById("para1").style.zoom = parseFloat(step);
        step +=0.5;
    }

    function minusZoom1(){
        step -=0.5;
        document.getElementById("para1").style.zoom = parseFloat(step);
    } …
Run Code Online (Sandbox Code Playgroud)

fonts qt arabic qtwebkit text-justify

6
推荐指数
1
解决办法
1046
查看次数

hotmail.com上的QT ssl错误:无法找到本地查找证书的颁发者证书

当我使用QtWebkit(内部使用QSslSocket)连接到www.hotmail.com时,登录后出现以下ssl错误:

  1. 无法找到本地查找证书的颁发者证书
  2. 为此,不信任根CA证书
  3. 没有证明可以验证.

登录前我可以在mail.yahoo.com上遇到相同的错误.我发现与这两个服务器的安全连接会触发ssl错误:

  1. https://gfx8.hotmail.com
  2. https://csc.beap.bc.yahoo.com

QT附带了一个名为securesocketclient的小型ssl演示程序.如果我使用这个小客户端连接到上述两个服务器的端口443,我可以产生相同的错误.我99%肯定这是QT的一个错误,因为我们在许多开发系统上产生了这个问题.它会影响linux,mac和windows QT.它影响QT 4.7.4一直到QT 4.8.4(没有尝试早期版本).使用openssl 0.9.8复制该错误.

有些人可能错误地声称使用带有预编译QT二进制文件的openssl 1.0.0修复了该错误.这是错误的,因为预编译的QT二进制文件是使用openssl 0.9.8头文件编译的.Openssl 0.9.8与openssl 1.0.0不是二进制兼容的.如果使用一个版本的openssl编译QT但使用另一个版本的openssl二进制文件,一些结构成员将被误解.我做了很多步骤和跟踪到QT和openssl源代码来得出这个结论.

由于hotmail和yahoo电子邮件是非常受欢迎的网站,我认为这个bug在QT的安全性方面是一个严重的错误.我已经将它报告给QT bug系统(https://bugreports.qt.io/browse/QTBUG-23625),我怀疑digia是否会根据我过去的经验得到它.

请随时分享您对如何解决此错误的看法.我知道如何调用ignoreSslErrors并假装没有问题.但这并不是打算如何使用openssl.


有关此问题的进一步调查的一些更新.

https://gfx8.hotmail.com的证书路径是:

  • 根CA:Versign Class 3公共主要证书颁发机构 - G5
  • 中级CA:Versign Class 3扩展验证SSL SGC CA.
  • 服务器证书:gfx-ecn.hotmail.com

根CA确实位于Windows证书存储区中,并在启动时正确加载.我想也许不知何故QT没有获得中间证书.我使用openssl命令行程序运行测试,如下所示:

openssl s_client -showcerts -connect gfx8.hotmail.com:443

输出在这里:

CONNECTED(000001AC)depth = 0 1.3.6.1.4.1.311.60.2.1.3 = US,1.3.6.1.4.1.311.60.2.1.2 = Washington,bu sinessCategory = Private Organization,serialNumber = 600413485,C = US,postalC ode = 98052,ST = Washington,L = Redmond,street = 1 Microsoft Way,O = Microso ft Corporation,OU = Windows Azure CDN,CN = gfx-ecn.hotmail.com …

ssl qt openssl qtwebkit

6
推荐指数
1
解决办法
9128
查看次数

page-break-inside在使用rowSpan的表格单元格中不起作用?

我想制作我的大型报表的PDF渲染.但似乎phantomjs不支持该rowSpan属性.这是一个例子:

phantomjs rasterize.js "http://fiddle.jshell.net/eric777/SLtGa/show/" report.pdf A4
Run Code Online (Sandbox Code Playgroud)

这是jsfiddle

这是结果 [

这有解决方法吗?

编辑:

也许有人可以在webkit中解决这个问题?

pdf-generation html-table qt4 qtwebkit phantomjs

6
推荐指数
1
解决办法
3803
查看次数

如何在QtWebKit中拦截AJAX-Requests?

我想根据SSL证书的指纹拦截,检查和(如果需要)拒绝AJAX请求.我使用该QNetworkAccessManager::createRequest(...)函数发出请求.我使用时一切正常QWebFrame::load(...).甚至在请求中加载的内容(如.css或.js文件)也会发出信号.不幸的是,没有AJAX-Requests会发出任何信号.我知道信号在功能中连接到相同的插槽(用于"普通"和AJAX请求)MyNetworkAccessManager::createRequest(...).

QNetworkReply *reply = QNetworkAccessManager::createRequest(op, req, outgoingData);
connect(reply, SIGNAL(readyRead()), this, SLOT(handleStarted()));
connect(reply, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(handleSslErrors(const QList<QSslError> &)));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(handleNetworkError()));
Run Code Online (Sandbox Code Playgroud)

为什么AJAX请求如此不同?我在哪里可以访问它们?

c++ qt qt4 qtwebkit phantomjs

6
推荐指数
1
解决办法
1268
查看次数

Capybara Webkit Capybara :: Webkit :: ConnectionError无法启动

我在Ubuntu(14.04 LTS)上使用capybara webkit,我在尝试使用它时遇到以下错误:

Capybara::Webkit::ConnectionError: /srv/www/app/shared/bundle/ruby/2.1.0/gems/capybara-webkit-1.3.1/bin/webkit_server failed to start.
from /srv/www/app/shared/bundle/ruby/2.1.0/gems/capybara-webkit-1.3.1/lib/capybara/webkit/connection.rb:75:in `parse_port'
from /srv/www/app/shared/bundle/ruby/2.1.0/gems/capybara-webkit-1.3.1/lib/capybara/webkit/connection.rb:81:in `discover_port'
from /srv/www/app/shared/bundle/ruby/2.1.0/gems/capybara-webkit-1.3.1/lib/capybara/webkit/connection.rb:62:in `start_server'
from /srv/www/app/shared/bundle/ruby/2.1.0/gems/capybara-webkit-1.3.1/lib/capybara/webkit/connection.rb:25:in `initialize'
from /srv/www/app/shared/bundle/ruby/2.1.0/gems/capybara-webkit-1.3.1/lib/capybara/webkit/driver.rb:17:in `new'
Run Code Online (Sandbox Code Playgroud)

我使用以下方法安装QT:

sudo apt-get install libqt4-dev libqtwebkit-dev libqt5webkit5-dev
Run Code Online (Sandbox Code Playgroud)

使用gem版本:capybara(2.4.4)和capybara-webkit(1.3.1)

相同的程序在mac上工作正常(使用自制软件安装qt)

谢谢

qtwebkit capybara-webkit

6
推荐指数
2
解决办法
2532
查看次数