Đồ á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.