【问题标题】:Drawing multiple shapes using QPainter on the same window?在同一个窗口上使用 QPainter 绘制多个形状?
【发布时间】:2013-12-01 00:34:47
【问题描述】:

我对 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();
}

【问题讨论】:

    标签: c++ qt user-interface


    【解决方案1】:

    如果你想看图纸,你需要每次都画出来。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多