在同一个窗口上使用QPainter绘制多个形状?

时间:2013-12-01 00:34:47

标签: c++ qt user-interface

我对QT完全不熟悉,我试图为一个简单的绘图应用程序制作一个简单的GUI 我创建了多个按钮,每个按钮绘制一定的形状,问题是什么时候 我点击一个按钮绘制一个形状,然后点击另一个上一个形状被删除,我希望我的所有图纸存储在同一个窗口,我该如何解决? 任何样本代码表示赞赏我仍然是QT新手

#include "dialog.h"
#include "ui_dialog.h"
#include "dialog.h"
#include<QPixmap>
#include <QLayout>
#include <QLabel>
bool p3=false;
bool p1=false;
QPixmap *pm;
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);

}

Dialog::~Dialog()
{
delete ui;
}
v;8oid Dialog::paintEvent(QPaintEvent *e){

QPainter painter(this);
if(p3==true){
painter.drawLine(10,10,100,100);
painter.save();
p3=false;
}
if(p1){
    painter.drawEllipse(100,100,10,10);

   // painter.save();
    p1=false;
}
}
void Dialog::on_pushButton_3_clicked()
{
 p3=true;
 update();
}


void Dialog::on_pushButton_clicked()
{
p1=true;
update();
}

1 个答案:

答案 0 :(得分:0)

如果您想看到图纸,则每次都需要绘制它们。

void MainWindow::paintEvent(QPaintEvent *e)
{
    QPainter painter(this);
    if(p3){
        painter.drawLine(10,10,100,100);
    }
    if(p1){
        painter.drawEllipse(100,100,10,10);
    }
}

void MainWindow::on_pushButton_2_clicked()
{
    p3 = !p3;
    update();
}

void MainWindow::on_pushButton_clicked()
{
    p1 = !p1;
    update();
}