gpt4 book ai didi

c++ - QPainter 初始化画家并使用它

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:31:24 27 4
gpt4 key购买 nike

我创建了一个名为 painter 的类,并在将 QMainWindow 作为参数传递的构造函数中创建了 QPainter p。

所以在 mainwindow.h 中我添加了:

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);
}

画家.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 似乎很愚蠢,它是这样工作的。有一种方法可以只初始化屏幕一次或使开始工作吗?

谢谢。

最佳答案

解决了
painter->begin(this->m);
painter->drawLine(10, 2, 1232, 1222);
painter->end();

这对我来说似乎很愚蠢,但总比在每一帧上声明它要好。如果有人有更好的主意。

谢谢

关于c++ - QPainter 初始化画家并使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11566987/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com