Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to take snapshot of the whole GUI
QtWS25 Last Chance

How to take snapshot of the whole GUI

Scheduled Pinned Locked Moved Unsolved General and Desktop
12 Posts 6 Posters 2.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Q Offline
    Q Offline
    Qt Enthusiast
    wrote on last edited by
    #1

    I have QT GUI and QMainWindow and have multiple windows inside it . I would like to take snapshot of the whole GUI and save it png format

    Could you let me know how is to be done

    1 Reply Last reply
    0
    • Z Offline
      Z Offline
      zapprox
      wrote on last edited by
      #2

      Hi, Screenshot Example may help.
      Regards.

      1 Reply Last reply
      0
      • J.HilkJ Offline
        J.HilkJ Offline
        J.Hilk
        Moderators
        wrote on last edited by
        #3

        Hi,

        QPixmap *pixmap = new QPixmap(this->size());
        this->render(pixmap);
        

        inside your Gui-Class should do the trick.


        Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


        Q: What's that?
        A: It's blue light.
        Q: What does it do?
        A: It turns blue.

        1 Reply Last reply
        0
        • Q Offline
          Q Offline
          Qt Enthusiast
          wrote on last edited by
          #4

          For Mainwindow

          D 1 Reply Last reply
          0
          • Q Qt Enthusiast

            For Mainwindow

            D Offline
            D Offline
            Devopia53
            wrote on last edited by
            #5

            @Qt-Enthusiast

            I would like to take snapshot of the whole GUI

            If this means to include window frames, try this:

            void Mainwindow::screenShot()
            {
                QRect   geo = frameGeometry();
                qApp->primaryScreen()->grabWindow(0, geo.x(), geo.y(), geo.width(), geo.height()).save("test.png");
            }
            
            1 Reply Last reply
            0
            • Q Offline
              Q Offline
              Qt Enthusiast
              wrote on last edited by
              #6

              how to get qApp pointer If I am accessing Mainwindow poiter some other QWidget

              1 Reply Last reply
              0
              • Venkatesh VV Offline
                Venkatesh VV Offline
                Venkatesh V
                wrote on last edited by
                #7

                Hi @Qt-Enthusiast
                include bellow line to your mainWindow class then you will get qApp pointer.
                #include<QApplication>

                1 Reply Last reply
                1
                • Q Offline
                  Q Offline
                  Qt Enthusiast
                  wrote on last edited by
                  #8

                  I am getting following error

                  gui/qt4/qmain/GQMainWindow.cc: In member function ?void GQMainWindow::copy()?:
                  gui/qt4/qmain/GQMainWindow.cc:959:10: error: ?class QApplication? has no member named ?primaryScreen?
                  qApp->primaryScreen()->grabWindow(0,geo.x(),geo.y(),geo.width(),geo.height()).save("test.png");
                  ^

                  1 Reply Last reply
                  0
                  • Q Offline
                    Q Offline
                    Qt Enthusiast
                    wrote on last edited by
                    #9

                    it is qt.4.3.3

                    D 1 Reply Last reply
                    0
                    • Venkatesh VV Offline
                      Venkatesh VV Offline
                      Venkatesh V
                      wrote on last edited by
                      #10

                      Hi,

                      For me it works fine.
                      Try with including both headers,
                      #include <QApplication>
                      #include <QScreen>

                      1 Reply Last reply
                      3
                      • Q Qt Enthusiast

                        it is qt.4.3.3

                        D Offline
                        D Offline
                        Devopia53
                        wrote on last edited by Devopia53
                        #11

                        @Qt-Enthusiast

                        Unfortunately, the QScreen is not supported in Qt 4.3.3.
                        However, you can use QPixmap instead of QScreen. But I can't guarantee it. I'm not currently using Qt 4.3.3.

                        The qApp is equivalent to the pointer returned by the QCoreApplication::instance() or the QApplication::instance() function.

                        1 Reply Last reply
                        2
                        • ? Offline
                          ? Offline
                          A Former User
                          wrote on last edited by
                          #12

                          Why not simply use Windows Key and PrtScr - does it have to be coded?

                          1 Reply Last reply
                          0

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved