painterというクラスを作成QPainter
し、コンストラクターでpを作成QMainWindow
してパラメーターとしてを渡しました。
したがって、mainwindow.hiに次のように追加しました。
protected:
void paintEvent(QPaintEvent *e);
private:
Ui::MainWindow *ui; // Created by the QT
Painter* p;
mainwindow.cppに追加しました
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
p=new Painter(this);
}
と
void MainWindow::paintEvent(QPaintEvent *e)
{
p->render(this);
}
Painter.h
#ifndef PAINTER_H
#define PAINTER_H
#include <QtCore>
#include <QtGui>
class Painter
{
private:
QPainter* painter;
bool init;
public:
Painter(QMainWindow* m);
~Painter();
void render(QMainWindow* m);
};
#endif // PAINTER_H
およびpainter.cpp
#include "painter.h"
Painter::Painter(QMainWindow* m)
{
painter=new QPainter(m);
//init=false;
}
void Painter::render(QMainWindow* m)
{
painter->drawLine(10, 3,123, 909);
}
何も描かない。
私が行った場合
void Painter::render(QMainWindow* m)
{
painer->begin(m);
painter->drawLine(10, 3,123, 909);
}
線をレンダリングし、2〜3秒後に閉じます
それを機能させる唯一の方法は、
void Painter::render(QMainWindow* m)
{
QPainter p(m);
p.drawLine(10, 3,123, 909);
}
しかし、すべてのフレームでpを初期化するのはばかげているようです、それはそのように機能します。画面を一度だけ初期化する方法や、開始を機能させる方法はありますか?
ありがとう。