Đồ án năm nhất của em yêu cầu làm một chương trình biểu diễn đồ họa các thao tác trên danh sách liên kết đơn như thêm node ở đầu, cuối,… Em dùng Qt để làm. Em cũng làm được kha khá, nhưng đang bị bí ở phần duyệt từ đầu đến cuối danh sách, duyệt đến đâu sẽ hiển thị giá trị của node đó. Source code của em như vậy nè, Square được kế thừa từ lớp QGraphicsItem, Node gồm một Square và Node *next:
void Dialog::traverse()
{
Node *cur = head;
timer = new QTimer(this);
while (cur)
{
connect(timer, SIGNAL(timeout()), cur->square, SLOT(changeColor()));
timer->start(3000);
cur = cur->next;
}
}
Khi chạy chương trình, thay vì từng hình vuông sẽ đổi màu lần lượt, thì chúng lại đổi màu cùng lúc luôn chứ. Em nghĩ là do hàm update( ) nên đến khi chạy tới event loop thì graphicsView mới vẽ lại. Em tính xài hàm repaint( ), nhưng hàm này không được sử dụng cho QGraphicsItem mới đau chứ. Mấy anh chị giúp em với, em biết ơn nhiều nhiều.
Bạn lên stackoverflow xem người ta hỏi cả trăm ngàn câu hỏi, có ai gửi cả project lên để hỏi không? Chọn cái nào mà bạn nghĩ cần thiết, gửi lên cho mọi người xem. Việc gửi một project lớn cho người khác xem là tối kị.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?