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 { |