Hi,
I am trying to add a WebView to QWidget got from createWindowContainer which in turn used QWindow.
But it does not show the page.It displays only window with text "QWindow" in it.
void MainWindow::launch_app(int id)
{
WId winid = (WId) id;
qDebug()<<"In launch_app win id is "<< id;
display->setLayout(vl);
window = createWindowContainer(QWindow::fromWinId(winid),display,\
Qt::WindowMinMaxButtonsHint|Qt::WindowCloseButtonHint
|Qt::WindowCancelButtonHint
|Qt::FramelessWindowHint);
QUrl qurl
("http://google.com");
QWebView *m_WebView = new QWebView;
window->setLayout(layout2);
layout2->addWidget(m_WebView);
m_WebView->setFocusPolicy(Qt::StrongFocus);
m_WebView->load(qurl);
m_WebView->show();
vl -> addWidget(window);
qDebug()<<"addWidget";
}
QWidget * display = new QWidget;
QWidget * window ;
void MainWindow::launch_app(int id)
{
WId winid = (WId) id;
qDebug()<<"In launch_app win id is "<< id;
QVBoxLayout *vl = new QVBoxLayout;
display->setLayout(vl);
window = createWindowContainer(QWindow::fromWinId(winid),display,\
Qt::WindowMinMaxButtonsHint|Qt::WindowCloseButtonHint
|Qt::WindowCancelButtonHint
|Qt::FramelessWindowHint);
QUrl qurl("http://google.com");
QHBoxLayout *layout2 = new QHBoxLayout;
QWebView *m_WebView = new QWebView;
window->setLayout(layout2);
layout2->addWidget(m_WebView);
m_WebView->setFocusPolicy(Qt::StrongFocus);
m_WebView->load(qurl);
m_WebView->show();
vl -> addWidget(window);
qDebug()<<"addWidget";
}
To copy to clipboard, switch view to plain text mode
the winid is got from below window having below structure
class RasterWindow : public QWindow
{
Q_OBJECT
public:
explicit RasterWindow(QWindow *parent = 0);
public slots:
void renderLater();
void renderNow();
protected:
void exposeEvent(QExposeEvent *event);
private:
QBackingStore *m_backingStore;
bool m_update_pending;
};
void RasterWindow
::render(QPainter *painter
) {
painter
->drawText
(QRectF(0,
0, width
(), height
()), Qt
::AlignCenter, QStringLiteral
("QWindow"));
}
class RasterWindow : public QWindow
{
Q_OBJECT
public:
explicit RasterWindow(QWindow *parent = 0);
virtual void render(QPainter *painter);
public slots:
void renderLater();
void renderNow();
protected:
bool event(QEvent *event);
void resizeEvent(QResizeEvent *event);
void exposeEvent(QExposeEvent *event);
private:
QBackingStore *m_backingStore;
bool m_update_pending;
};
void RasterWindow::render(QPainter *painter)
{
painter->drawText(QRectF(0, 0, width(), height()), Qt::AlignCenter, QStringLiteral("QWindow"));
}
To copy to clipboard, switch view to plain text mode
Bookmarks