tests/auto/qpixmap/tst_qpixmap.cpp
changeset 30 5dc02b23752f
parent 18 2f34d5167611
child 33 3e2da88830cd
equal deleted inserted replaced
29:b72c6db6890b 30:5dc02b23752f
    45 #include <qbitmap.h>
    45 #include <qbitmap.h>
    46 #include <qimage.h>
    46 #include <qimage.h>
    47 #include <qmatrix.h>
    47 #include <qmatrix.h>
    48 #include <qdesktopwidget.h>
    48 #include <qdesktopwidget.h>
    49 #include <qpaintengine.h>
    49 #include <qpaintengine.h>
       
    50 #include <qtreewidget.h>
    50 #include <qsplashscreen.h>
    51 #include <qsplashscreen.h>
    51 
    52 
    52 #include <private/qpixmapdata_p.h>
    53 #include <private/qpixmapdata_p.h>
    53 
    54 
    54 #include <QSet>
    55 #include <QSet>
   795 }
   796 }
   796 
   797 
   797 void tst_QPixmap::grabWidget()
   798 void tst_QPixmap::grabWidget()
   798 {
   799 {
   799     QWidget widget;
   800     QWidget widget;
   800     widget.setPalette(Qt::green);
   801     QImage image(128, 128, QImage::Format_ARGB32_Premultiplied);
       
   802     for (int row = 0; row < image.height(); ++row) {
       
   803         QRgb *line = reinterpret_cast<QRgb *>(image.scanLine(row));
       
   804         for (int col = 0; col < image.width(); ++col)
       
   805             line[col] = qRgb(rand() & 255, row, col);
       
   806     }
       
   807 
       
   808     QPalette pal = widget.palette();
       
   809     pal.setBrush(QPalette::Window, QBrush(image));
       
   810     widget.setPalette(pal);
   801     widget.resize(128, 128);
   811     widget.resize(128, 128);
   802 
   812 
   803     QPixmap expected(64, 64);
   813     QPixmap expected = QPixmap::fromImage(QImage(image.scanLine(64) + 64 * 4, 64, 64, image.bytesPerLine(), image.format()));
   804     expected.fill(Qt::green);
       
   805 
       
   806     QPixmap actual = QPixmap::grabWidget(&widget, QRect(64, 64, 64, 64));
   814     QPixmap actual = QPixmap::grabWidget(&widget, QRect(64, 64, 64, 64));
       
   815     QVERIFY(lenientCompare(actual, expected));
       
   816 
       
   817     actual = QPixmap::grabWidget(&widget, 64, 64);
       
   818     QVERIFY(lenientCompare(actual, expected));
       
   819 
       
   820     // Make sure a widget that is not yet shown is grabbed correctly.
       
   821     QTreeWidget widget2;
       
   822     actual = QPixmap::grabWidget(&widget2);
       
   823     widget2.show();
       
   824     expected = QPixmap::grabWidget(&widget2);
       
   825 
   807     QVERIFY(lenientCompare(actual, expected));
   826     QVERIFY(lenientCompare(actual, expected));
   808 }
   827 }
   809 
   828 
   810 void tst_QPixmap::grabWindow()
   829 void tst_QPixmap::grabWindow()
   811 {
   830 {