この小さなブラウザ アプリが、モーダル ウィンドウで指定された window.returnValue を返せないのはなぜですか? Qt Browser デモでは機能しますが、なぜ機能し、このミニ ブラウザー アプリは機能しないのかわかりません。
#include <QApplication>
#include <QWebView>
#include <QWebPage>
#include <QUrl>
class WebPage : public QWebPage
{
public:
QWebPage *createWindow(QWebPage::WebWindowType type)
{
QWebView *wv = new QWebView;
if (type == QWebPage::WebModalDialog)
wv->setWindowModality(Qt::ApplicationModal);
return wv->page();
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWebView view;
QWebSettings::globalSettings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
view.setPage(new WebPage);
view.load(QUrl("http://help.dottoro.com/external/examples/ljdlgxbu/showModalDialog_1.htm"));
view.show();
return a.exec();
}
showModalDialog()は同期的であり、呼び出しによって作成されたモーダル ダイアログで window.returnValue として設定された値を返す必要があります。小さなブラウザー アプリはダイアログ ウィンドウを正常に開きますが、(モーダル)window.returnValue が showModalDialog() の戻り値として設定されていません。