0

CSS 3D サポートで QtWebKit を使用する必要があるため、QGraphicsWebView と QGLWidget を使用しました。コードは次のようになります。

MainWindow.hpp:

#include <QMainWindow>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsWebView>

class MainWindow : public QMainWindow {
    Q_OBJECT;
    public:
        MainWindow(const char *url);
        void init();
    private:
        QGraphicsView *gview;
        QGraphicsScene *scene;
        QGraphicsWebView *web_view;
};

MainWindow.cpp:

#include "MainWindow.hpp"
#include <QWebSettings>
#include <QGLWidget>
#include <QStatusBar>

MainWindow::MainWindow(const char *url) {
    setWindowTitle("QTWebKit Experiment");

    QWebSettings::globalSettings()->setAttribute(QWebSettings::AcceleratedCompositingEnabled, true);
    gview = new QGraphicsView(this);
    gview->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
    gview->setViewport(new QGLWidget(this));

    scene = new QGraphicsScene(gview);
    web_view = new QGraphicsWebView();

    scene->addItem(web_view);
    gview->setScene(scene);
    web_view->load(QString(url));
    web_view->setResizesToContents(true);

    setCentralWidget(gview);
}

void MainWindow::init() {
    show();
}

問題は、web_viewが QMainWindow ウィジェットを埋めないことです。ウェブサイトをウィンドウいっぱいにするにはどうすればよいですか?

->スクリーンショット - サイズ変更された QMainWindow での Google

4

1 に答える 1

0

QGraphicsWebViewをQGraphicsSceneに追加する前に、サイズポリシーを設定しようとしましたか?

web_view->setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding);

また、ウィジェットをレイアウトに追加する必要があります(プロパティsizePolicyはレイアウト動作であるため、ウィジェットをレイアウトに配置する必要があります)QVboxLayoutはニーズに適しています。

于 2012-07-30T16:17:16.763 に答える