我是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的值为""
答案 0 :(得分:6)
这是因为在使用QWebView::setUrl()
设置网址后,您必须等待QWebView::loadFinished(bool ok)
signal
才能检索任何数据。请参阅documentation。
因此,请在slot
QWebView::loadFinished()
signal
中移动元素信息的检索代码。