Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.
Extending Qt WebKit/ja: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[Category:Developing with Qt::QtWebKit]] | [[Category:Developing with Qt::QtWebKit]] | ||
[toc align_right="yes" depth="2"] | |||
[[Category:Japanese]] | |||
[[Extending_QtWebKit|English]] [[Estenent_QtWebKit|Catalan]] [[Extendiendo_QtWebKit|Spanish]] | [[Extending_QtWebKit|English]] [[Estenent_QtWebKit|Catalan]] [[Extendiendo_QtWebKit|Spanish]] "French":http://qt-devnet.developpez.com/tutoriels/qtwebkit/etendre-webkit/ '''日本語''' | ||
= Qt WebKit の拡張方法 = | = Qt WebKit の拡張方法 = | ||
Line 7: | Line 9: | ||
QtWebKit モジュールを使うことで、Qt と WebKit にある機能を組み合わせて拡張することができます。C++ と Web デザインのハイブリッドは様々な理由で人気を得ています。そこには、チームが熟練した Web 開発者達の巨大なコミュニティの力を借りることができるという事実もあります。 | QtWebKit モジュールを使うことで、Qt と WebKit にある機能を組み合わせて拡張することができます。C++ と Web デザインのハイブリッドは様々な理由で人気を得ています。そこには、チームが熟練した Web 開発者達の巨大なコミュニティの力を借りることができるという事実もあります。 | ||
"Qt Quarterly":http://doc.qt.nokia.com/qq/index.html の一連の記事はそれに関わる技術と課程の良い紹介と言えるでしょう。 | |||
== ネットワークインターフェースの作成 == | == ネットワークインターフェースの作成 == | ||
ハイブリッドデザインでは、しばしばネットワークインターフェースを扱う Qt 独自のコードが必要となります。 | ハイブリッドデザインでは、しばしばネットワークインターフェースを扱う Qt 独自のコードが必要となります。"Using a Simple Web Service with Qt":http://doc.qt.nokia.com/qq/qq23-web-service.html (Qt で簡単な Web サービスを使う) では "MathTran":http://www.mathtran.org/ Web サービスを使って TeX 形式のテキストのプレビュー画像を表示しています。2007年の記事で使われたクラスは今では使用が推奨されていないため、読む価値はありません。 | ||
== Web ベースのユーザーインターフェースに Qt のウィジェットを追加する == | == Web ベースのユーザーインターフェースに Qt のウィジェットを追加する == | ||
David Boddie の書いた | David Boddie の書いた "Plugging into the Web":http://doc.qt.nokia.com/qq/qq26-webplugin.html (Web でのプラグイン)では、Web ベースのユーザーインターフェースに Qt のウィジェットを埋め込む方法を説明しています。その記事は基本的な [[Doc:QWebView]] の使い方で Web ページを表示するところから始まっています。 | ||
<code> int main(int argc, char *argv[]) | <code> int main(int argc, char *argv[]) | ||
{ | |||
QApplication app(argc, argv); | |||
QWebView view; | |||
view.load(QUrl("http://www.trolltech.com/")); | |||
view.show(); | |||
return app.exec(); | |||
} | |||
</code> | |||
その後、CSV ファイルを表示する簡単なウィジェットの作り方を [[Doc:QWebPluginFactory]] を用いて説明しています。 | その後、CSV ファイルを表示する簡単なウィジェットの作り方を [[Doc:QWebPluginFactory]] を用いて説明しています。 | ||
Line 23: | Line 33: | ||
== QtWebKit に新しいプロトコルを追加する == | == QtWebKit に新しいプロトコルを追加する == | ||
David がその後に書いた | David がその後に書いた "Adding New Protocols to QtWebKit":http://doc.qt.nokia.com/qq/32/qq32-webkit-protocols.html (QtWebKit に新しいプロトコルを追加する) では Qt のネットワークアクセス API と WebKit を用いて、[[Doc:QWebView]] を簡単な FTP クライアントに仕立てました。Qt のネットワークアクセス API は、QHttp と QFtp クラスで提供されていた機能の多く(全てではありませんが)を置き換えることを目的とした技術です。ネットワークアクセス API は Qt 独自の技術ではありますが、QtWebKit モジュールでこの Qt の技術と WebKit を統合させており、Qt アプリケーションの開発者はこのブラウザエンジンをカスタマイズすることができます。それはまた、このブラウザエンジンがデータを取得して描画する方法もコントロールすることを意味します。 | ||
[[Doc:QNetworkRequest]] と [[Doc:QNetworkReply]] はネットワークの操作を抽象化して再利用できるように設計されているため、これらのクラスを使って QtWebKit を使って書かれたブラウザに FTP のサポートを追加できることは明らかです。そこで、QtWebKit モジュールがネットワークアクセスクラスを使ってどのようにネットワークの操作を管理しているか確認する前に、まずはネットワークアクセスクラス自体を調べる必要があります。 | [[Doc:QNetworkRequest]] と [[Doc:QNetworkReply]] はネットワークの操作を抽象化して再利用できるように設計されているため、これらのクラスを使って QtWebKit を使って書かれたブラウザに FTP のサポートを追加できることは明らかです。そこで、QtWebKit モジュールがネットワークアクセスクラスを使ってどのようにネットワークの操作を管理しているか確認する前に、まずはネットワークアクセスクラス自体を調べる必要があります。 | ||
Line 29: | Line 39: | ||
以下のコードは [[Doc:QWebPage]] で使われている既存のネットワークマネージャを置き換えるための、[[Doc:QNetworkAccessManager]] の派生クラスの作成方法を示しています。このクラスで、URL が FTP プロトコルかどうかをチェックする createRequest() 関数を再実装しています。 | 以下のコードは [[Doc:QWebPage]] で使われている既存のネットワークマネージャを置き換えるための、[[Doc:QNetworkAccessManager]] の派生クラスの作成方法を示しています。このクラスで、URL が FTP プロトコルかどうかをチェックする createRequest() 関数を再実装しています。 | ||
<code> | <code> | ||
NetworkAccessManager::NetworkAccessManager(QNetworkAccessManager *manager, QObject *parent) | |||
: QNetworkAccessManager(parent) | |||
{ | |||
setCache(manager->cache()); | |||
setCookieJar(manager->cookieJar()); | |||
setProxy(manager->proxy()); | |||
setProxyFactory(manager->proxyFactory()); | |||
} |
Revision as of 10:37, 25 February 2015
[toc align_right="yes" depth="2"]
English Catalan Spanish "French":http://qt-devnet.developpez.com/tutoriels/qtwebkit/etendre-webkit/ 日本語
Qt WebKit の拡張方法
QtWebKit モジュールを使うことで、Qt と WebKit にある機能を組み合わせて拡張することができます。C++ と Web デザインのハイブリッドは様々な理由で人気を得ています。そこには、チームが熟練した Web 開発者達の巨大なコミュニティの力を借りることができるという事実もあります。
"Qt Quarterly":http://doc.qt.nokia.com/qq/index.html の一連の記事はそれに関わる技術と課程の良い紹介と言えるでしょう。
ネットワークインターフェースの作成
ハイブリッドデザインでは、しばしばネットワークインターフェースを扱う Qt 独自のコードが必要となります。"Using a Simple Web Service with Qt":http://doc.qt.nokia.com/qq/qq23-web-service.html (Qt で簡単な Web サービスを使う) では "MathTran":http://www.mathtran.org/ Web サービスを使って TeX 形式のテキストのプレビュー画像を表示しています。2007年の記事で使われたクラスは今では使用が推奨されていないため、読む価値はありません。
Web ベースのユーザーインターフェースに Qt のウィジェットを追加する
David Boddie の書いた "Plugging into the Web":http://doc.qt.nokia.com/qq/qq26-webplugin.html (Web でのプラグイン)では、Web ベースのユーザーインターフェースに Qt のウィジェットを埋め込む方法を説明しています。その記事は基本的な Doc:QWebView の使い方で Web ページを表示するところから始まっています。
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWebView view;
view.load(QUrl("http://www.trolltech.com/"));
view.show();
return app.exec();
}
その後、CSV ファイルを表示する簡単なウィジェットの作り方を Doc:QWebPluginFactory を用いて説明しています。
QtWebKit に新しいプロトコルを追加する
David がその後に書いた "Adding New Protocols to QtWebKit":http://doc.qt.nokia.com/qq/32/qq32-webkit-protocols.html (QtWebKit に新しいプロトコルを追加する) では Qt のネットワークアクセス API と WebKit を用いて、Doc:QWebView を簡単な FTP クライアントに仕立てました。Qt のネットワークアクセス API は、QHttp と QFtp クラスで提供されていた機能の多く(全てではありませんが)を置き換えることを目的とした技術です。ネットワークアクセス API は Qt 独自の技術ではありますが、QtWebKit モジュールでこの Qt の技術と WebKit を統合させており、Qt アプリケーションの開発者はこのブラウザエンジンをカスタマイズすることができます。それはまた、このブラウザエンジンがデータを取得して描画する方法もコントロールすることを意味します。
Doc:QNetworkRequest と Doc:QNetworkReply はネットワークの操作を抽象化して再利用できるように設計されているため、これらのクラスを使って QtWebKit を使って書かれたブラウザに FTP のサポートを追加できることは明らかです。そこで、QtWebKit モジュールがネットワークアクセスクラスを使ってどのようにネットワークの操作を管理しているか確認する前に、まずはネットワークアクセスクラス自体を調べる必要があります。
以下のコードは Doc:QWebPage で使われている既存のネットワークマネージャを置き換えるための、Doc:QNetworkAccessManager の派生クラスの作成方法を示しています。このクラスで、URL が FTP プロトコルかどうかをチェックする createRequest() 関数を再実装しています。
NetworkAccessManager::NetworkAccessManager(QNetworkAccessManager *manager, QObject *parent)
: QNetworkAccessManager(parent)
{
setCache(manager->cache());
setCookieJar(manager->cookieJar());
setProxy(manager->proxy());
setProxyFactory(manager->proxyFactory());
}