mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-04 16:25:27 +08:00
qt 6.5.1 original
This commit is contained in:
15
tests/manual/xembed/qt-client-raster/CMakeLists.txt
Normal file
15
tests/manual/xembed/qt-client-raster/CMakeLists.txt
Normal file
@ -0,0 +1,15 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## qt-client-raster Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_manual_test(qt-client-raster
|
||||
GUI
|
||||
SOURCES
|
||||
main.cpp
|
||||
rasterwindow.cpp rasterwindow.h
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
)
|
29
tests/manual/xembed/qt-client-raster/main.cpp
Normal file
29
tests/manual/xembed/qt-client-raster/main.cpp
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2017 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "rasterwindow.h"
|
||||
#include <QDebug>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
QGuiApplication app(argc, argv);
|
||||
|
||||
QStringList args = app.arguments();
|
||||
|
||||
WId winId = 0;
|
||||
if (args.count() > 1) {
|
||||
bool ok;
|
||||
winId = args[1].toUInt(&ok);
|
||||
Q_ASSERT(ok);
|
||||
}
|
||||
|
||||
RasterWindow window;
|
||||
|
||||
QWindow *foreign = QWindow::fromWinId(winId);
|
||||
Q_ASSERT(foreign != 0);
|
||||
|
||||
window.setParent(foreign);
|
||||
window.show();
|
||||
|
||||
return app.exec();
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
TEMPLATE = app
|
||||
TARGET= qt-client-raster
|
||||
QT += gui
|
||||
|
||||
SOURCES += \
|
||||
main.cpp \
|
||||
rasterwindow.cpp
|
||||
HEADERS += \
|
||||
rasterwindow.h
|
72
tests/manual/xembed/qt-client-raster/rasterwindow.cpp
Normal file
72
tests/manual/xembed/qt-client-raster/rasterwindow.cpp
Normal file
@ -0,0 +1,72 @@
|
||||
// Copyright (C) 2017 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "rasterwindow.h"
|
||||
|
||||
RasterWindow::RasterWindow(QWindow *parent)
|
||||
: QWindow(parent)
|
||||
, m_update_pending(false)
|
||||
{
|
||||
winId();
|
||||
|
||||
m_backingStore = new QBackingStore(this);
|
||||
create();
|
||||
|
||||
setGeometry(100, 100, 300, 200);
|
||||
}
|
||||
|
||||
|
||||
bool RasterWindow::event(QEvent *event)
|
||||
{
|
||||
if (event->type() == QEvent::UpdateRequest) {
|
||||
m_update_pending = false;
|
||||
renderNow();
|
||||
return true;
|
||||
}
|
||||
return QWindow::event(event);
|
||||
}
|
||||
|
||||
void RasterWindow::renderLater()
|
||||
{
|
||||
if (!m_update_pending) {
|
||||
m_update_pending = true;
|
||||
QCoreApplication::postEvent(this, new QEvent(QEvent::UpdateRequest));
|
||||
}
|
||||
}
|
||||
|
||||
void RasterWindow::resizeEvent(QResizeEvent *resizeEvent)
|
||||
{
|
||||
m_backingStore->resize(resizeEvent->size());
|
||||
if (isExposed())
|
||||
renderNow();
|
||||
}
|
||||
|
||||
void RasterWindow::exposeEvent(QExposeEvent *)
|
||||
{
|
||||
if (isExposed()) {
|
||||
renderNow();
|
||||
}
|
||||
}
|
||||
|
||||
void RasterWindow::renderNow()
|
||||
{
|
||||
if (!isExposed())
|
||||
return;
|
||||
|
||||
QRect rect(0, 0, width(), height());
|
||||
m_backingStore->beginPaint(rect);
|
||||
|
||||
QPaintDevice *device = m_backingStore->paintDevice();
|
||||
QPainter painter(device);
|
||||
|
||||
painter.fillRect(0, 0, width(), height(), Qt::white);
|
||||
render(&painter);
|
||||
|
||||
m_backingStore->endPaint();
|
||||
m_backingStore->flush(rect);
|
||||
}
|
||||
|
||||
void RasterWindow::render(QPainter *painter)
|
||||
{
|
||||
painter->drawText(QRectF(0, 0, width(), height()), Qt::AlignCenter, QStringLiteral("QWindow"));
|
||||
}
|
32
tests/manual/xembed/qt-client-raster/rasterwindow.h
Normal file
32
tests/manual/xembed/qt-client-raster/rasterwindow.h
Normal file
@ -0,0 +1,32 @@
|
||||
// Copyright (C) 2017 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#ifndef RASTERWINDOW_H
|
||||
#define RASTERWINDOW_H
|
||||
|
||||
#include <QtGui>
|
||||
|
||||
class RasterWindow : public QWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit RasterWindow(QWindow *parent = nullptr);
|
||||
|
||||
virtual void render(QPainter *painter);
|
||||
|
||||
public slots:
|
||||
void renderLater();
|
||||
void renderNow();
|
||||
|
||||
protected:
|
||||
bool event(QEvent *event) override;
|
||||
|
||||
void resizeEvent(QResizeEvent *event) override;
|
||||
void exposeEvent(QExposeEvent *event) override;
|
||||
|
||||
private:
|
||||
QBackingStore *m_backingStore;
|
||||
bool m_update_pending;
|
||||
};
|
||||
|
||||
#endif // RASTERWINDOW_H
|
Reference in New Issue
Block a user