(C++) QGraphicsSvgItemExample3
February 24, 2017 · View on GitHub
(C++) QGraphicsSvgItemExample3
Technical facts
Operating system(s) or programming environment(s)
Lubuntu 15.04 (vivid)
Qt Creator 3.1.1
- G++ 4.9.2
Libraries used:
Qt project file: ./CppQGraphicsSvgItemExample3/CppQGraphicsSvgItemExample3.pro
exists (../../DesktopApplication.pri) { include(../../DesktopApplication.pri) } !exists (../../DesktopApplication.pri) { QT += core printsupport QT += gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets svg CONFIG += console CONFIG -= app_bundle TEMPLATE = app CONFIG(release, debug|release) { DEFINES += NDEBUG NTRACE_BILDERBIKKEL } QMAKE_CXXFLAGS += -std=c++11 -Wall -Wextra -Weffc++ unix { QMAKE_CXXFLAGS += -Werror } } exists(../../Libraries/Boost.pri) { include(../../Libraries/Boost.pri) } !exists(../../Libraries/Boost.pri) { win32 { INCLUDEPATH += \ ../../Libraries/boost_1_55_0 } } SOURCES += \ qtmain.cpp \ mygraphicsview.cpp HEADERS += \ mygraphicsview.h
./CppQGraphicsSvgItemExample3/mygraphicsview.h
#ifndef MYGRAPHICSVIEW_H #define MYGRAPHICSVIEW_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 <QGraphicsView> #pragma GCC diagnostic pop struct QWheelEvent; class MyGraphicsView : public QGraphicsView { Q_OBJECT public: MyGraphicsView(QWidget *parent = 0); MyGraphicsView(const MyGraphicsView&) = delete; MyGraphicsView& operator=(const MyGraphicsView&) = delete; void wheelEvent(QWheelEvent *event); }; #endif // MYGRAPHICSVIEW_H
./CppQGraphicsSvgItemExample3/mygraphicsview.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 "mygraphicsview.h" #include <QWheelEvent> #pragma GCC diagnostic pop MyGraphicsView::MyGraphicsView(QWidget *parent) : QGraphicsView(parent) { } void MyGraphicsView::wheelEvent(QWheelEvent *event) { const double new_scale = 1.0 + (static_cast<double>(event->delta()) / 1000.0); this->scale(new_scale,new_scale); }
./CppQGraphicsSvgItemExample3/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 <fstream> #include <QApplication> #include <QGraphicsScene> #include <QGraphicsSvgItem> #include "mygraphicsview.h" #pragma GCC diagnostic pop int main(int argc, char *argv[]) { QApplication a(argc, argv); const std::string filename = "tmp.svg"; { std::ofstream f(filename.c_str()); //Use '*(' and ')*' as delimiters f << R"*(<svg xmlns="http://www.w3.org/2000/svg" version="1.1">)*" << R"*(<rect width="150" height="150" fill="rgb(0, 255, 0)" stroke-width="1" stroke="rgb(0, 0, 0)" />)*" << R"*(</svg>)*"; } QGraphicsSvgItem i(filename.c_str()); i.setScale(0.25); QGraphicsScene s; s.addItem(&i); MyGraphicsView w; w.setGeometry(100,100,200,200); w.setScene(&s); w.show(); return a.exec(); }