#pragma once
#include <QWidget>
#include <QPainter>
public:
~Canvas();
public slots:
void translateX(int x);
void translateY(int y);
private:
qreal trans_x,trans_y;
};
public:
~wCanvas();
private:
Canvas *canvas;
};
#pragma once
#include <QWidget>
#include <QPainter>
class Canvas:public QWidget{
public:
Canvas(QWidget *parent=0);
~Canvas();
public slots:
void translateX(int x);
void translateY(int y);
private:
void paintEvent(QPaintEvent *);
qreal trans_x,trans_y;
};
class wCanvas:public QWidget{
public:
wCanvas(QWidget *parent=0);
~wCanvas();
private:
Canvas *canvas;
};
To copy to clipboard, switch view to plain text mode
Canvas.cpp file:
#include "Canvas.h"
#include <QGridLayout>
#include <QScrollBar>
// Implementación de Canvas
Canvas
::Canvas(QWidget *parent
):QWidget(parent
),trans_x
(0),trans_y
(0){ setAutoFillBackground(true);
}
Canvas::~Canvas(){
}
painter.translate(trans_x,trans_y);
// Fondo transparente
painter.setPen(Qt::lightGray);
painter.setBrush(Qt::lightGray);
painter.drawRect(0,0,width()/2-1,height()/2-1);
painter.drawRect(width()/2,height()/2,width()/2,height()/2);
// Fin fondo transparente
}
void Canvas::translateX(int x){
trans_x+=x;
}
void Canvas::translateY(int y){
trans_y+=y;
}
// Implementación de QCanvas
canvas=new Canvas;
canvas->setMinimumSize(800,600);
hScrollBar->setRange(-100,100);
hScrollBar->setValue(0);
vScrollBar->setRange(-100,100);
vScrollBar->setValue(0);
connect(hScrollBar,SIGNAL(sliderMoved(int)),canvas,SLOT(translateX(int)));
connect(vScrollBar,SIGNAL(sliderMoved(int)),canvas,SLOT(translateY(int)));
gridLayout->setMargin(0);
gridLayout->setSpacing(0);
gridLayout->addWidget(canvas,0,0);
gridLayout->addWidget(vScrollBar,0,1);
gridLayout->addWidget(hScrollBar,1,0);
setLayout(gridLayout);
}
wCanvas::~wCanvas(){
delete canvas;
}
#include "Canvas.h"
#include <QGridLayout>
#include <QScrollBar>
// Implementación de Canvas
Canvas::Canvas(QWidget *parent):QWidget(parent),trans_x(0),trans_y(0){
setPalette(QPalette(Qt::white));
setAutoFillBackground(true);
}
Canvas::~Canvas(){
}
void Canvas::paintEvent(QPaintEvent *){
QPainter painter(this);
painter.translate(trans_x,trans_y);
// Fondo transparente
painter.setPen(Qt::lightGray);
painter.setBrush(Qt::lightGray);
painter.drawRect(0,0,width()/2-1,height()/2-1);
painter.drawRect(width()/2,height()/2,width()/2,height()/2);
// Fin fondo transparente
}
void Canvas::translateX(int x){
trans_x+=x;
}
void Canvas::translateY(int y){
trans_y+=y;
}
// Implementación de QCanvas
wCanvas::wCanvas(QWidget *parent):QWidget(parent){
canvas=new Canvas;
canvas->setMinimumSize(800,600);
QScrollBar *hScrollBar=new QScrollBar(Qt::Horizontal);
hScrollBar->setRange(-100,100);
hScrollBar->setValue(0);
QScrollBar *vScrollBar=new QScrollBar(Qt::Vertical);
vScrollBar->setRange(-100,100);
vScrollBar->setValue(0);
connect(hScrollBar,SIGNAL(sliderMoved(int)),canvas,SLOT(translateX(int)));
connect(vScrollBar,SIGNAL(sliderMoved(int)),canvas,SLOT(translateY(int)));
QGridLayout *gridLayout=new QGridLayout;
gridLayout->setMargin(0);
gridLayout->setSpacing(0);
gridLayout->addWidget(canvas,0,0);
gridLayout->addWidget(vScrollBar,0,1);
gridLayout->addWidget(hScrollBar,1,0);
setLayout(gridLayout);
}
wCanvas::~wCanvas(){
delete canvas;
}
To copy to clipboard, switch view to plain text mode
Many thanks
Bookmarks