Tôi muốn đặt số nguyên được lưu trữ trong QWidget
và tôi cho rằng chức năng thành viên setUserData
sẽ thực hiện thủ thuật nhưng tôi không thể tìm thấy bất kỳ tài liệu nào. Bất kỳ gợi ý nào?Làm cách nào để đặt dữ liệu người dùng cho QWidget?
Trả lời
Bạn có thể đang tìm kiếm QObject::setProperty()
(tất nhiên là được thừa hưởng bởi QWidget
).
Có thể gán một đối tượng (giả sử lớp Foo) làm thuộc tính và lấy lại khi được truy vấn, thay vì chỉ sử dụng chuỗi, int hoặc các thuộc tính kiểu dữ liệu đơn giản khác không? – SexyBeast
Tôi không chắc chắn vì tôi không phải là chuyên gia QT. Nhưng giải pháp mà tôi đã đăng bên dưới để tạo kiểu được kế thừa chắc chắn sẽ hoạt động đối với một đối tượng tùy ý. Bạn sẽ đơn giản thay thế "Dữ liệu" bằng "Foo". –
Tôi không phải là chuyên gia về QT nhưng tại sao không chỉ tạo ra một lớp kế thừa từ QWidget
và có số nguyên? Giống như vậy:
class MyDerivedWidget : public QWidget
{
public:
MyDerivedWidget();
private:
Data *myUserData;
};
Hoặc nếu bạn nhấn mạnh vào việc sử dụng setUserData
kiểm tra bài đăng cuối cùng here.
Đó là, nếu bạn làm rõ ràng MyDerivedWidget (QWidget cha mẹ = 0) {}, đơn giản và hiệu quả, vẫn còn, nó âm thanh một chút hacky với tôi, nhưng câu trả lời hữu ích vì vậy tôi đã bỏ phiếu lên, thx. –
IMO, đây là ít nhất là hacky của hai câu trả lời. Nếu bạn muốn lưu trữ dữ liệu trong một QWidget (so với chỉ sử dụng một cấu trúc bình thường), cách thích hợp sẽ là Kế thừa lớp bạn muốn, thêm nhiều chức năng hơn và làm điều đó 'đúng'. Atleast bằng cách kế thừa, bạn có thể thêm accessors và như vậy để làm cho nó hữu ích hơn là chỉ cần đi qua một QWidget chuẩn xung quanh với một thuộc tính ngẫu nhiên bổ sung ... – g19fanatic
@ g19fanatic, trân trọng không đồng ý (và dường như các nhà thiết kế thư viện đang ở trên của tôi) bên, nếu không 'setProperty()' sẽ không tồn tại). Đôi khi nó có thể rất thuận tiện để có một "túi dữ liệu" đơn giản được kết hợp với một cá thể, mà không cần phải thiết kế và duy trì toàn bộ một lớp con chỉ để có được điều đó. –
QObject :: setUserData được đánh dấu là "nội bộ" - có thể nên tránh sử dụng nó. –