| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | // To build the source, set your drive letter Q: to the Qt SDK root,// e.g., use "subst q: C:\QtSDK\Desktop\Qt\4.8.0\msvc2010" on the cmd line.// This minimal source is derived from http://trac.webkit.org/wiki/QtWebKitTiling,// for an example with more features see http://doc.qt.nokia.com/qt-maemo/maemo5-graphicswebview.html#include <QApplication.h>#include <QGraphicsScene>#include <QGraphicsView>#include <QGraphicsWebView>#include <QWebSettings>#include <QNetworkProxy>#include <windows.h>#include <string>const char * DEFAULT_URL  = "http://localhost/";const char * DEFAULT_SIZE = "550x720";const char * DEFAULT_PROXY = 0;static void ShowUsage(const char * exeName) {  const char * name = "";  if (exeName) {    name = strrchr(exeName, '\\');    if (name) {      name++;    } else {      name = exeName;    }  }  std::string msg = "Usage:\n";  msg += "  " + std::string(name) + " [-w###x###] [url]\n";  msg += "  " + std::string(name) + " -h\n\n";  msg += "Use -w###x### to specify the window size\n";  MessageBoxA(NULL, msg.c_str(), name, MB_ICONINFORMATION);}class BGraphicsWebView : public QGraphicsWebView {public:  bool loadFinished(bool);};bool BGraphicsWebView::loadFinished(bool) {  return 0;}int main(int argc, char *argv[]) {  const char * url = DEFAULT_URL;  const char * size = DEFAULT_SIZE;  const char * proxy = DEFAULT_PROXY;  for (int i = 1; i<argc; i++) {       if (argv[i][0]=='/' || argv[i][0]=='-') {      if (argv[i][1]=='h' || argv[i][1]=='H' || argv[i][1]=='?') {        ShowUsage(argv[0]);        return 0;      }       else if ((argv[i][1]=='w') || (argv[i][1]=='W')) {        if ((argv[i][2]!=0) && (strchr(argv[1],'x')!=0) && (size==DEFAULT_SIZE)) {          size = argv[i]+2;        }      }      else if ((argv[i][1]=='p') || (argv[i][1]=='P')) {        proxy = argv[i]+2;      }      else {        ShowUsage(argv[0]);        return 1;      }    } else {      if (url==DEFAULT_URL) {        url = argv[i];      } else {        ShowUsage(argv[0]);        return 1;      }    }  }  QApplication app(argc, argv);  if (proxy) {    QUrl proxyUrl = proxy;    QNetworkProxy netProxy(QNetworkProxy::HttpProxy, proxyUrl.host(), proxyUrl.port());    QNetworkProxy::setApplicationProxy(netProxy);  }  QGraphicsScene scene;  QGraphicsView view(&scene);  view.setFrameShape(QFrame::NoFrame);  view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);  view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);  BGraphicsWebView webview;  int width=0, height=0;  if (2!=sscanf(size,"%ux%u", &width, &height)) {    ShowUsage(argv[0]);    return 1;  }  webview.resize(width, height);  webview.load(QUrl(url));  scene.addItem(&webview);  view.setFixedSize(width, height);  view.show();  int ret = app.exec();  return ret;}
 |