当前位置:首页 / 文章测试 / C++代码

C++代码

开始打字练习

// Copyright (C) 2016 The Qt Company Ltd.

// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

#ifndef RASTERWINDOW_H

#define RASTERWINDOW_H

//! [1]

#include <QtGui>

#include <QScopedPointer>

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:

QScopedPointer<QBackingStore> m_backingStore;

};

//! [1]

#endif // RASTERWINDOW_H

// Copyright (C) 2016 The Qt Company Ltd.

// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

#include "rasterwindow.h"

//! [1]

RasterWindow::RasterWindow(QWindow *parent)

: QWindow(parent)

, m_backingStore(new QBackingStore(this))

{

setGeometry(100, 100, 300, 200);

}

//! [1]

//! [7]

bool RasterWindow::event(QEvent *event)

{

if (event->type() == QEvent::UpdateRequest) {

renderNow();

return true;

}

return QWindow::event(event);

}

//! [7]

//! [6]

void RasterWindow::renderLater()

{

requestUpdate();

}

//! [6]

//! [5]

void RasterWindow::resizeEvent(QResizeEvent *resizeEvent)

{

m_backingStore->resize(resizeEvent->size());

}

//! [5]

//! [2]

void RasterWindow::exposeEvent(QExposeEvent *)

{

if (isExposed())

renderNow();

}

//! [2]

//! [3]

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(), QGradient::NightFade);

render(&painter);

painter.end();

m_backingStore->endPaint();

m_backingStore->flush(rect);

}

//! [3]

//! [4]

void RasterWindow::render(QPainter *painter)

{

painter->drawText(QRectF(0, 0, width(), height()), Qt::AlignCenter, QStringLiteral("QWindow"));

}

//! [4]

声明:以上文章均为用户自行发布,仅供打字交流使用,不代表本站观点,本站不承担任何法律责任,特此声明!如果有侵犯到您的权利,请及时联系我们删除。