我向來沒怎麼研究過網路,因為我以前不做網路,所以沒怎麼研究過。整了好幾天才整的能上網。
想學點qt,就在qt creator上弄著玩。什麼layout啊,pushbutton啊,等等,整了半天,突然看到QWebView了,我想這個玩意兒可能應該是可以顯示網頁的吧。拖了一個出來玩玩。編譯都無法通過,什麼原因呢?找找吧,原來是在.pro檔案上少了QT += webkit。編譯一下,嘿,通過了。但是沒顯出任何東西來,咋個回事呢?
大半天又過去了,想起他內建的demo例子了。載入進來看看吧。還是一直處於connecting的狀態,就是串連不上,唉。乾脆問問別人吧。大胖子PM發話了,你看看代理設定了嗎?
奇怪啊,我的代理都是設好了的啊,東找西找,總算看到demo例子運行後,自己有個設定代理的,趕緊改一下吧。哈哈,成功了。
一下子我明白了,我們的網路在域裡,應該要有代理才能通到外網。雖然我對代理這個東西不熟,不過大概知道怎麼回事,等以後再細細研究一下吧。
隔了幾天,繼續寫程式吧。參照demo例子設定代理的方式,我在自己的mainwindow.h裡面添加了一些東西:
#include <QtWebKit/QWebView>
#include <QtNetwork/QNetworkProxy>
#include <QtNetwork/QNetworkAccessManager>
#include <QSettings>
#include <QTextCodec>
class MainWindow : public QMainWindow
{
。。。
private:
Ui::MainWindow *ui;
QWebView *webV;
QNetworkProxy *proxy;
QNetworkAccessManager *netwkAcssMng;
};
mainwindow.cpp中也添加了代碼:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
。。。
webV = qFindChild<QWebView *>(this, "webView");
netwkAcssMng = new QNetworkAccessManager;
QNetworkProxy proxy;
proxy = QNetworkProxy::HttpProxy;
proxy.setHostName(tr("xx.xx.xx.xx")); //Proxy 伺服器
proxy.setPort(8080);
netwkAcssMng->setProxy(proxy);
webV->page()->setNetworkAccessManager(netwkAcssMng);
webV->load(QUrl("http://www.google.com.hk/"));
webV->show();
}
居然還是編譯不通過,整半天,發現是在.pro檔案裡面少了QT += webkit network。
總算通過了,等待測試,哈哈~
成功了!順利顯示出了Google網頁。雖然是個小小成功,但是還是挺開心的。
忘記了,我還delete netwkAcssMng;的。哈哈。
也許不應該delete netwkAcssMng吧,人家都屬於webV的page了吧。