1

我是这个问答网站和 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 具有值""

4

1 回答 1

6

那是因为使用 设置 URL 后QWebView::setUrl(),您必须等待QWebView::loadFinished(bool ok) signal才能检索任何数据。请参阅文档

因此,将元素信息的检索代码移动到slotfor 中QWebView::loadFinished() signal

于 2012-05-26T16:11:44.720 回答