Save QWidget as image

English 简体中文 繁体中文 ภาษาไทย Tiếng Việt
Summary

Developers working with Qt can easily save the visual content of a QWidget as an image for later reference. This process involves instantiating a QPixmap object, sized to match the target QWidget using its size() method. The widget's current rendering is then captured onto this QPixmap using its render() method. Finally, the populated QPixmap can be saved to a file in various supported formats like PNG or JPEG, providing a straightforward way to persist widget visuals.

Thư viện Qt là một thư viện GUI tuyệt vời cho các lập trình viên C++ được phát triển bởi Nokia và hiện là một dự án mã nguồn mở. Thông thường, chúng ta có thể sử dụng QPainter để vẽ các chuỗi, đường thẳng hoặc hình ảnh trên một QWidget. Chúng ta có thể ghi đè phương thức paintEvent() của QWidget khi muốn sử dụng đối tượng QPianter để vẽ một cái gì đó trên một QWidget.

Nếu chúng ta muốn lưu các mục được vẽ trên QWidget dưới dạng hình ảnh để tham khảo sau này, chúng ta có thể làm gì? Chúng ta có thể lưu một QWidget dưới dạng hình ảnh. Đây là mã để đạt được điều này:

QPixmap pixmap(this->size());

this->render(&pixmap);

pixmap.save("test.png");

Khá đơn giản phải không? Đúng vậy, đây là tất cả các mã bạn cần. Ở đây this đề cập đến bất kỳ con trỏ QWidget nào, nó có một phương thức size() trả về kích thước của QWidget, pixmap sẽ sử dụng giá trị này để tạo hình ảnh có cùng kích thước. Sau đó, chúng ta cần sử dụng phương thức render() để kết xuất nội dung của widget vào đối tượng QPixmap. Cuối cùng, chúng ta cần lưu nội dung đã kết xuất vào một hình ảnh.

Bảng sau đây hiển thị định dạng tệp hình ảnh được hỗ trợ bởi QPixmap.

Định dạngMô tảHỗ trợ của Qt
BMP Windows Bitmap Đọc/ghi
GIF Định dạng trao đổi đồ họa (tùy chọn) Đọc
JPG Nhóm chuyên gia nhiếp ảnh chung Đọc/ghi
JPEG Nhóm chuyên gia nhiếp ảnh chung Đọc/ghi
PNG Đồ họa mạng di động Đọc/ghi
PBM Bitmap di động Đọc
PGM Bản đồ xám di động Đọc
PPM Pixmap di động Đọc/ghi
XBM X11 Bitmap Đọc/ghi
XPM X11 Pixmap Đọc/ghi
C++ IMAGE QT QWIDGET

  RELATED

  COMMENT

1
Anonymous
Sep 22, 2018 at 6:48 pm

Great stuff!