Tôi đang viết một bài kiểm tra đơn vị cho Trình xác thực tùy chỉnh trong QTableView bằng cách sử dụng QTestLib framework. Một trong những trường hợp thử nghiệm cơ bản nhất có thể được mô tả như sau:Làm thế nào bạn có thể chỉnh sửa một tế bào QTableView từ một thử nghiệm đơn vị QTest?
Nhấp đúp vào ô bảng trong cột thứ ba và hàng thứ tư và thêm số '5' vào nội dung của nó.
Nó không phải là đủ để chỉ cần thay đổi giá trị trong mô hình hoặc bất cứ điều gì, trường hợp kiểm tra thực hiện nó như thế này:
- đúp Nhấp vào ô trong bảng để thiết lập nó vào chế độ chỉnh sửa
- Nhấn phím [Kết thúc].
- Nhấn phím [5].
Lưu ý: This question có câu trả lời về cách đặt ô bảng thành chế độ chỉnh sửa từ mã, tuy nhiên kiểm tra đơn vị sẽ cố gắng bám sát khả năng của người dùng, tức là hành động Chuột/Bàn phím.
Tôi đã phát hiện vị trí X/Y của ô có thể được truy xuất bằng cách sử dụng QTableView::columnViewportPosition(int) và QTableView::rowViewportPosition(int). Tuy nhiên, nhấp đúp vào vị trí quy định sử dụng QTest::mouseDClick(...) không chọn các tế bào cũng không đặt nó vào chế độ chỉnh sửa:
// Retrieve X/Y coordinates of the cell in the third column and the fourth row
int xPos = m_pTableView->columnViewportPosition(2);
int yPos = m_pTableView->rowViewportPosition(3);
// This does not work
QTest::mouseDClick(m_pTableView, Qt::LeftButton, QPoint(xPos, yPos));
Làm thế nào tôi có thể thực hiện các trường hợp thử nghiệm mà tôi mô tả ở trên, sử dụng chuột/bàn phím chỉ hành động?
PS: Tôi đang cố gắng này trong môi trường Windows XP 32 bit và Qt 4.6.1
Đây chính xác là câu trả lời mà tôi cần, cảm ơn bạn rất nhiều :) – astrojuanlu
+ 5 và + 10 cho in - int xPos = m_pTableView-> columnViewportPosition (2) + 5; int yPos = m_pTableView-> rowViewportPosition (3) + 10; – NiladriBose
@NiladriBose: đây là số lượng pixel. Khi chúng tôi đang mô phỏng nhấp chuột, chúng tôi có thể muốn nhấp vào một nơi nào đó bên trong ô, không phải trên đường viền của nó, chỉ để đảm bảo rằng ô chính xác được chọn. –