• 8991阅读
  • 5回复

Qt中QWebFrame的toHtml()方法为什么取不到返回值 [复制链接]

上一主题 下一主题
离线aidayei666
 
只看楼主 倒序阅读 楼主  发表于: 2009-10-29
建的是GUI工程,包含QtGui,QtCore,Webkit模块,
头文件QWebView,QWebFrame,qDebug已包含,源代码如下:
QWebView *view=new QWebView(0);
QWebFrame *frame=view->page()->mainFrame();
frame->load(QUrl("http://www.google.cn/"));
QString text=frame->toPlainText();//如果换成frame->title(),结果一样没有输出
qDebug()<<text;
没有输出,请各位高手帮忙看一下,看看问题出在哪?但调用view->show(),可以显示网页,我是刚接触Qt的新手,谢谢指教!
离线dbzhang800

只看该作者 1楼 发表于: 2009-10-29
load 之后过一段时间再 toHtml

网页不可能在几个机器周期内就加载完成。
离线aidayei666
只看该作者 2楼 发表于: 2009-10-29
自己顶一下,问题还没解决,希望哪位好心路过的大侠,指点几句,吾将不胜感激
应该不是时间问题,是有输出的,如果调用的是toHtml(),输出的是"<html></html>",但这不对啊,
如果调用的是title(),输出的是"",即空值,toPlainText(),一样是""
为什么会这样子?
[ 此帖被aidayei666在2009-10-29 21:43重新编辑 ]
离线dbzhang800

只看该作者 3楼 发表于: 2009-10-29
好吧,大致按你的描述,写一点代码:
执行load后2秒输出 toPlainText
因为view 不显示,4秒后调用其 close 以关闭程序


.pro 文件的内容如下

  1. QT += webkit
  2. SOURCES += main.cpp



main.cpp 文件的内容如下
  1. #include <QtCore/QDebug>
  2. #include <QtCore/QTimer>
  3. #include <QtGui/QApplication>
  4. #include <QtWebKit/QWebView>
  5. #include <QtWebKit/QWebFrame>
  6. class MyOutPut:public QObject
  7. {
  8.     Q_OBJECT
  9. public:
  10.     MyOutPut(QWebFrame *frame, QObject *parent=0):QObject(parent),m_frame(frame){}
  11. public slots:
  12.     void doPrint() {        qDebug()<<m_frame->toPlainText();    }
  13. private:
  14.     QWebFrame *m_frame;
  15. };
  16. #include "main.moc"
  17. int main(int argc, char *argv[])
  18. {
  19.     QApplication a(argc, argv);
  20.     QWebView *view=new QWebView;
  21.     QWebFrame *frame=view->page()->mainFrame();
  22.     frame->load(QUrl("http://www.google.cn/"));
  23. //    QString text=frame->toPlainText();
  24.     MyOutPut output(frame);
  25.     QTimer::singleShot(2000, &output, SLOT(doPrint()));
  26. //    view->show();
  27. QTimer::singleShot(4000, view, SLOT(close()));
  28.     return a.exec();
  29. }
离线aidayei666
只看该作者 4楼 发表于: 2009-10-30
谢谢,果然是高手,佩服
离线午小夜

只看该作者 5楼 发表于: 2009-11-01
为什么不用QWebView呢,这个类有个信号,会在信息加载完成的时候提交。
m_view = new QWebView(this);
connect(m_view,SIGNAL(loadFinished(bool)),this,SLOT(parseData(bool)));
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
快速回复
限100 字节
 
上一个 下一个