Thì cứ đợi 1 khoảng rồi mới gửi kết quả một lần.
Trong Qt có lớp QTimer có thể giúp được việc này. Sau một khoảng thời gian định trước nó sẽ gửi một signal, cứ tạo một slot xử lý cái signal này để làm công việc gửi kết quả là được.
Hiện mình đang làm bài tập lập trình trên QT. Có vòng lặp và trong từng vòng lặp có gửi kết quả tính toán lên LineEdit để quan sát.
Khổ một điều : kết quả tính toán nhanh quá nên k quan sát được cả quá trình trên LineEdit. Có cách nào để giữ chậm kết quả trong từng vòng lặp k ạ?
Thì cứ đợi 1 khoảng rồi mới gửi kết quả một lần.
Trong Qt có lớp QTimer có thể giúp được việc này. Sau một khoảng thời gian định trước nó sẽ gửi một signal, cứ tạo một slot xử lý cái signal này để làm công việc gửi kết quả là được.
Mình đã hiểu hướng xử lý của bạn.
Tks bạn.
Bạn có thể cho mình xin ví dụ về sử dụng QTimer được không?
Đây là reference của QTimer: https://qt-project.org/doc/qt-5/qtimer.html
Đây là ví dụ: http://codeprogress.com/cpp/libraries/qt/qtClasses.php?item=QTimer
Tks. Cho mình hỏi thêm 1 câu:
Có thể sử dụng QTime để tạo một bộ đếm thời gian k?
mình muốn mô phỏng chuyển động của một vật
Được bạn à.
Nhưng nếu bạn muốn mô phỏng chuyển động có thể dùng kết hợp time và timer.
Timer dùng để cập nhật còn time (thời gian máy tính) dùng tính toán thời gian cho chuyển động.
Tham khảo thêm:
QTimer http://qt-project.org/doc/qt-5/timers.html
QTime http://qt-project.org/doc/qt-5/QTime.html
Ví dụ về đồng hồ của QT: http://qt-project.org/doc/qt-5/qtwid...k-example.html
anh cho em hỏi! với code nhu thế này mà tại sao lúc hiển thị, Qt chỉ hiển thị cho em có 3 hình ảnh là như thế nào?
chính xác là nó chỉ hiển thị lần lượt có 3 hình ảnh trong khi em muốn nó phải là 7 hình ảnh chuyển động cách nhau 0,5 giây!
QTimer::singleShot(500, this, SLOT( updateScreenShotLabel2()));
QTimer::singleShot(460, this, SLOT( updateScreenShotLabel3()));
QTimer::singleShot(450, this, SLOT( updateScreenShotLabel4()));
QTimer::singleShot(470, this, SLOT( updateScreenShotLabel5()));
QTimer::singleShot(480, this, SLOT( updateScreenShotLabel6()));
QTimer::singleShot(460, this, SLOT( updateScreenShotLabel7()));
void ScreenShot::updateScreenShotLabel7()
{
originalPixmap.load("C:/Qt/7.png");
screenShotLabel->setPixmap(originalPixmap.scaled(screenShotLabel->size(),Qt::KeepAspectRatio,Qt::SmoothTransformati on));
screenShotLabel->show();
}