1

私はこの Q&A サイトと Qt の世界では初心者です。アプリケーションに Web ページを統合したいと考えています。タグ入力の値を取得したいのですが、うまくいきません。

これは私のクラスのコンストラクタです:

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();
}

Web ページはアプリケーションに表示されますが、コマンド ラインの出力は次のようになります。

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

変数 storedText の値は""

4

1 に答える 1

6

これは、を使用してURLを設定した後、データを取得する前にQWebView::setUrl()待機する必要があるためです。ドキュメントQWebView::loadFinished(bool ok) signalを参照してください。

したがって、要素の情報の取得コードをforに移動しslotますQWebView::loadFinished() signal

于 2012-05-26T16:11:44.720 に答える