Tôi mới tham gia QT. Tôi hiểu rằng bạn có thể buộc một màn hình làm mới, nhưng tôi đã kéo tất cả tóc của tôi ra cố gắng tìm ra cách. Đây là những gì tôi đang cố gắng làm.QT Gửi lại/Làm lại/Cập nhật/Làm điều gì đó
Tôi nhấn một nút (sự kiện tín hiệu onClick), chạy mã thay đổi hình ảnh (QLabel) trên màn hình, chờ đầu vào và sau đó tiến hành bằng cách thay đổi hình ảnh mới (nhãn hiệu khác). Tôi đã thử mọi thứ và màn hình không làm mới cho đến khi mã sự kiện tín hiệu onclick hoàn tất. Ngay bây giờ, tôi không chờ đợi cho người sử dụng đầu vào, tôi đang sử dụng chúng tôi ngủ (~ 500 ms) cho mục đích thử nghiệm. Từ những gì tôi đọc, QT là sự kiện có nghĩa là tôi đang tạo ra một loạt các sự kiện, được đặt trong một hàng đợi và được thực hiện khi (sự kiện tín hiệu onClick) quay trở lại (vòng lặp chính)/(xử lý sự kiện). Tôi không muốn đợi cho đến khi chức năng được hoàn thành, nó sẽ làm cho lập trình cực kỳ đau đớn nếu tôi phải hoàn thành thói quen này hoàn toàn dựa trên các sự kiện.
Tôi làm cách nào để buộc bản đồ pixabel của QLabel làm mới. Tôi đã thử mọi thứ. Dưới đây là tất cả mã tôi đã thử trong trình xử lý sự kiện onClick tín hiệu của mình. (upButton là tên của QLabel là một pixmap)
update();
repaint();
ui->upButton->setUpdatesEnabled(TRUE);
update();
repaint();
QPaintEvent paintevent(ui->upButton->childrenRegion());
QPaintEvent * test = &paintevent;
paintEvent(test);
this->changeEvent(test);
ui->upButton->update();
ui->upButton->repaint();
ui->upButton->repaint(ui->upButton->childrenRegion());
repaint();
QApplication::sendPostedEvents();
this->parentWidget()->update();
usleep(100000);
Như bạn có thể thấy, tôi chỉ chụp trong bóng tối vào thời điểm này. Tôi đã cố gắng xem xét mã mẫu và làm tất cả các bài tập ở nhà của tôi, nhưng tôi bị mất. Đánh giá cao bất kỳ trợ giúp, lời khuyên và mã mẫu nào.
Trong các hệ thống GUI theo hướng sự kiện, bạn thường không "đợi nhập" trong các cuộc gọi lại của mình. Trạng thái chờ đầu vào có nghĩa là bạn đang ở trong vòng lặp sự kiện. Vì vậy, tôi nhầm lẫn lý do tại sao bạn sẽ sử dụng chúng tôi ngủ cho bất cứ điều gì - bạn thường nghĩ gì khi gọi * khi bạn * sẽ xử lý đầu vào của người dùng? Đừng lo lắng về các sự kiện đau đớn ... tín hiệu và khe không cắn (thường). – HostileFork