0

クラスで何らかの形を描き、QPainterそれをディスクに保存しようとしています。私が知る限り、最も簡単な方法は を使用QPainterして に描画し、 をQPixmap介してピックスマップで視覚化しQLabel、 を使用することQPixmap::saveです。

しかし、このテストを実行すると、QWidget 内に小さなブラック ボックスしか表示されません。

MyWidget::MyWidget()
{
    std::cout << "MyWidget > ." << std::endl;

    l = new QLabel();
    l->setParent(this);
    pixmap = new QPixmap(460, 480);
    painter = new QPainter(pixmap);
}

MyWidget::~MyWidget()
{
    delete pixmap;
    delete painter;
}

void MyWidget::paintEvent(QPaintEvent *event)
{
    std::cout << "dudee" << std::endl;

    painter->begin(pixmap);

    painter->drawLine(1,1,100,100);
    QPen myPen(Qt::black, 2, Qt::SolidLine);
    painter->setPen(myPen);
    painter->drawLine(100,100,100,1);
    painter->setRenderHint(QPainter::Antialiasing, true);
    painter->setPen(QPen(Qt::black, 3, Qt::DashDotLine, Qt::RoundCap));
    painter->setBrush(QBrush(Qt::green, Qt::SolidPattern));
    painter->drawEllipse(200, 80, 400, 240);

    painter->end();

    l->setPixmap(*pixmap);
}

l->update() をいくつか追加しようとしましたが、何も変わりません..

編集:

アニメーションにする必要があります。nミリ秒ごとに描画用の関数を呼び出すQTimerを介してアニメーション作業を取得します(答えが示唆するようにpaintEventではありません)

4

1 に答える 1