#include <QWidget>
#include <QApplication>
#include <QMainWindow>
#include <QPaintDevice>
#include <QPainter>
#include <QPushButton>
#include <QGridLayout>
#include <QFileDialog>
#include <QMessageBox>
#include <QImageWriter>
#include <QImage>
class SimplePaintWidget : public QWidget {
QWidget *container;
Q_OBJECT
public:
SimplePaintWidget(QWidget *parent = 0) : QWidget(parent) {
QPushButton *pb = new QPushButton("Save as Image");
QGridLayout *gl = new QGridLayout();
gl->addWidget(pb, 0, 0);
gl->addWidget(this, 1, 0);
container = new QWidget();
container->setLayout(gl);
QObject::connect(pb, SIGNAL(clicked()), this, SLOT(saveButtonPressedEvent()));
}
virtual void paintEvent(QPaintEvent*) {
QPainter painter(this);
painter.setPen(Qt::blue);
painter.setFont(QFont("Arial", 30));
painter.drawText(rect(), Qt::AlignCenter, "Qt");
}
QWidget *getSurroundingContainer() {
return container;
}
public slots:
void saveButtonPressedEvent() {
QFileDialog fd;
if (fd.exec()) {
QImage img(size(), QImage::Format_RGB32);
render(&img);
QImageWriter iw(fd.selectedFiles().first());
iw.write(img);
QMessageBox mb;
mb.setText("Image saved to " + fd.selectedFiles().first());
mb.exec();
}
}
};
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QMainWindow mw;
mw.setCentralWidget((new SimplePaintWidget())->getSurroundingContainer());
mw.show();
return app.exec();
}
#include "paint_example.moc"