Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's C++ page.

 

 

 

 

 

(C++) QGraphicsViewExample2

 

Technical facts

 

Operating system(s) or programming environment(s)

IDE(s):

Project type:

C++ standard:

Compiler(s):

Libraries used:

 

 

 

 

 

Qt project file: ./CppQGraphicsViewExample2/CppQGraphicsViewExample2.pro

 

include(../../DesktopApplication.pri)

SOURCES += qtmain.cpp \
    grabber.cpp

HEADERS += \
    grabber.h

 

 

 

 

 

./CppQGraphicsViewExample2/grabber.h

 

#ifndef GRABBER_H
#define GRABBER_H

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
#include <QObject>
#pragma GCC diagnostic pop

struct Grabber : public QObject
{
  Q_OBJECT

  public:
  Grabber(
    const int win_id,
    const std::string& filename = "screengrab.png"
  );
  ~Grabber() noexcept;

  public slots:
  void Grab() const noexcept;

  private:
  const std::string m_filename;
  const int m_win_id;
};

#endif // GRABBER_H

 

 

 

 

 

./CppQGraphicsViewExample2/grabber.cpp

 

#include "grabber.h"

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
#include <QImage>
#include <QPixmap>
#pragma GCC diagnostic pop

Grabber::Grabber(
  const int win_id,
  const std::string& filename
)
  : m_filename{filename},
    m_win_id{win_id}
{

}

Grabber::~Grabber() noexcept {}

void Grabber::Grab() const noexcept
{
  const QImage screenshot{QPixmap::grabWindow(m_win_id).toImage()};
  screenshot.save(m_filename.c_str());
}

 

 

 

 

 

./CppQGraphicsViewExample2/qtmain.cpp

 

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsSimpleTextItem>
#include <QTimer>
#include "grabber.h"
#pragma GCC diagnostic pop



int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  QGraphicsScene s;
  QGraphicsSimpleTextItem t;
  t.setText("To be grabbed...");
  t.setFlags(
      QGraphicsItem::ItemIsSelectable
    | QGraphicsItem::ItemIsMovable);

  s.addItem(&t);
  QGraphicsView v(&s);
  v.setGeometry(100,100,400,100);
  v.show();

  Grabber g(
    v.winId(),
    "CppQGraphicsViewExample2Screengrab.png"
  );
  QTimer::singleShot(1000,&g,SLOT(Grab()));

  return a.exec();
}

 

 

 

 

 

Go back to Richel Bilderbeek's C++ page.

Go back to Richel Bilderbeek's homepage.

 

Valid XHTML 1.0 Strict

This page has been created by the tool CodeToHtml