我已经使用addToJavaScriptWindowObject成功地将C++对象添加到QWebFrame,并且可以从javascript调用该对象上的插槽.
但我真正想做的是让其中一个插槽返回一个新对象.例如,我有一个这样的插槽,它返回一个QObject派生类实例:
   MyObject* MyApp::helloWorld()
   {
          //MyObject is dervied from QObject
          return new MyObject();
   }
我可以像这样从javascript成功调用这个插槽
   var foo=myapp.helloWorld();
但是foo似乎是空的,我不能通过Javascript调用任何插槽或访问它的任何属性.
有关如何实现这一目标的任何想法?
有没有什么方法可以将Q ++对象/函数公开给在Qt中的QtWebKit浏览器中运行的JavaScript?可以将ActionScript对象暴露给在Adobe AIR中的WebKit浏览器内运行的JS代码 - 我正在Qt中寻找类似的功能.
我正在寻找一个工具或插件来帮助我创建Web服务,就像DOT NET为Linux做的那样.
我使用了QtWebKit的最新版本,即版本2.2.但我必须说它远不及目前的铬释放量.它缺少很多CSS属性,缺少抗锯齿,它使旋转的图片变得难看,文本的选择很好地用铬实现,它在页面缩放上缩小了很多,仅举几例.
谷歌贡献给webkit源多少钱?
是否可以在Qt中使用chrome版本的webkit?
如何解决这个问题,并确保我的Web应用程序将像Chromium中呈现的那样呈现奇妙的效果?
如何在源代码中出现这种差异?
我们正在使用QtWebKit 4.7并想知道帧加载何时进行重定向.
目前我们在QNetworkAccessManager的子类中计算传出请求,我们在其中覆盖createRequest.
这在大多数情况下都很好用,但是当第一个响应是301或302(重定向)时,它会在某处被吞噬.
我们只需要通过以下方式请求网址:
QNetworkRequest request(QUrl("http://www.twitter.com")); // 301 to twitter.com
frame->load(request);
我用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);
    } …当我使用QtWebkit(内部使用QSslSocket)连接到www.hotmail.com时,登录后出现以下ssl错误:
登录前我可以在mail.yahoo.com上遇到相同的错误.我发现与这两个服务器的安全连接会触发ssl错误:
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确实位于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 …
我想制作我的大型报表的PDF渲染.但似乎phantomjs不支持该rowSpan属性.这是一个例子:
phantomjs rasterize.js "http://fiddle.jshell.net/eric777/SLtGa/show/" report.pdf A4
这是jsfiddle
这是结果
这有解决方法吗?
编辑:
也许有人可以在webkit中解决这个问题?
我想根据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()));
为什么AJAX请求如此不同?我在哪里可以访问它们?
我在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'
我使用以下方法安装QT:
sudo apt-get install libqt4-dev libqtwebkit-dev libqt5webkit5-dev
使用gem版本:capybara(2.4.4)和capybara-webkit(1.3.1)
相同的程序在mac上工作正常(使用自制软件安装qt)
谢谢
qtwebkit ×10
qt ×8
c++ ×3
javascript ×2
phantomjs ×2
qt4 ×2
arabic ×1
chromium ×1
fonts ×1
html-table ×1
openssl ×1
qt4.7 ×1
qwebkit ×1
ssl ×1
standards ×1
text-justify ×1
web-services ×1
webkit ×1