下記のコードはbushButtonを押す度に、描画位置をずらして直線を描画するものです。
つまり、bushButtonを押す度に、前回描いた直線は消去して、新しい直線を描画します。
Q1) 前回描いた直線は残して、新しい直線を描画することは出来ますか?
======================
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPainter>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
CTLDRAW=false;
PX=200;
PY=200;
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(draw()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::draw(){
ui->pushButton->setCheckable(false);
CTLDRAW=true;
update();
ui->pushButton->setCheckable(true);
}
void MainWindow::paintEvent(QPaintEvent *){
if(CTLDRAW==false){
return;
}
else{
QPainter painter(this);
//painter.setCompositionMode(QPainter::CompositionMode_Difference);
//painter.setCompositionMode(QPainter::CompositionMode_DestinationOver);
//painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
//painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
//painter.setCompositionMode(QPainter::CompositionMode_DestinationIn);
//painter.setCompositionMode(QPainter::CompositionMode_DestinationOut);
//painter.setCompositionMode(QPainter::CompositionMode_SourceOut);
//painter.setCompositionMode(QPainter::CompositionMode_Plus);
//painter.setCompositionMode(QPainter::RasterOp_SourceXorDestination);
painter.setPen(QPen(Qt::blue, 2, Qt::SolidLine, Qt::RoundCap));
painter.drawLine(0,0, PX, PY);//描画位置をずらして、直線の描画
if(PY>0) PY-=2;
}
}
以上、宜しくお願いします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/10 03:26
2016/12/10 04:17