QWebView :: setUrl无效

时间:2012-05-26 16:05:50

标签: c++ qt

我是Q& A网站和Qt世界的新手。我想在我的应用程序中集成一个网页。我想得到一个标签输入的值,但它不起作用,你能帮助我吗?

这是我班级的构造函数:

MainWindow::MainWindow(QWidget *parent)
: QWidget(parent)
{
QVBoxLayout *container = new QVBoxLayout;


QWebView *cart = new QWebView();
QWebPage *page = new QWebPage();

cart->setUrl(QUrl("http://www.mysite.com/"));


QWebFrame *main = cart->page()->mainFrame();

QWebElement document = main->documentElement();
QWebElement t1 = document.findFirst("input[name=myname]");
QString storedText = t1.attribute("value", "defaultvalue");

qDebug() << "T1 value:" << storedText;
storedText = t1.attributeNS(QString::Null(), "value");
qDebug() << "T1 ns value:" << storedText;
QVariant v = t1.evaluateJavaScript("this.value");
qDebug() << "Javascript value:" << v.toString(); // ok. returns c

container->addWidget(cart);

setLayout(container);
this->show();
}

网页出现在我的应用程序中,但命令行上的输出是:

T1 value: ""
T1 ns value: ""
Javascript value: "" 

变量storedText的值为""

1 个答案:

答案 0 :(得分:6)

这是因为在使用QWebView::setUrl()设置网址后,您必须等待QWebView::loadFinished(bool ok) signal才能检索任何数据。请参阅documentation

因此,请在slot QWebView::loadFinished() signal中移动元素信息的检索代码。