Tôi có một QScrollArea cha đẻ tiện ích cuộn tuyệt vời của tôi. Tôi thích cập nhật nội dung trong những dịp khác nhau.update() hoặc repaint() không kích hoạt paintEvent()
Vì điều này, tôi đã ghi đè paintEvent(QPaintEvent *)
. Sau đó, mỗi khi tôi muốn nó được thực hiện tôi gọi update()
trên widget.
Sự cố:paintEvent()
không bao giờ được gọi bằng cách này!
Những gì tôi cố gắng trong xử lý sự cố cho đến nay:
- Sử dụng
repaint()
thay vìupdate()
. Nên gọi nó ngay lập tức. Thật không may thì không. - Kiểm tra
isVisible()
vàupdatesEnabled
- Kiểm tra thời gian ghi đè của tôi là chính xác. Thay đổi kích thước cửa sổ gọi hàm của tôi. Chỉ các cuộc gọi cập nhật thủ công(), repaint() của tôi không thành công.
- Thực hiện QTimer để kích hoạt cập nhật() hoặc sơn lại() sau mỗi 500ms. Trình kích hoạt cho đầu ra văn bản, chức năng này không được gọi.
Bất kỳ ai có ý tưởng gì cần kiểm tra tiếp theo? Điều gì có thể làm cho repaint() không phải gọi paintEvent()?
Không vẽ trên QScrollArea, mà thay vào đó QLabel được chỉ định của nó giải quyết được sự cố cho tôi. Tôi nhận được bản cập nhật() s cho QLabel. – ypnos
bạn có thể dán định nghĩa tiêu đề/lớp của mình không? Bạn có tất cả các macro Q_OBJECT của bạn trong đó không? cũng đưa ra một đoạn trích ngắn về cách bạn đang ghi đè paintEvent của bạn() ... – bgs