2012-05-26 27 views
1

我是新來的Q &一個網站和Qt世界。我想在我的應用程序中集成一個網頁。我想獲得標籤輸入的值,但它不起作用,你能幫我嗎?QWebView :: setUrl無法正常工作

這是我的類的構造函數:

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具有價值""

回答

5

那是因爲在使用QWebView::setUrl()設置了URL後,您必須等待QWebView::loadFinished(bool ok)signal檢索任何數據之前。請參閱documentation

因此,將元素信息的檢索代碼移動到slotQWebView::loadFinished()signal

+0

非常感謝,現在工作! 我想象那是,但我不知道我需要一個信號。 再次感謝您。 – user1419205

+0

不客氣..只需將此答案標記爲正確.. :) – Ammar