2011-08-05 30 views
11

Thuộc tính QObject::objectName có phải là duy nhất cho toàn bộ ứng dụng không? Ví dụ, giả sử tôi có nút ở đâu đó được gọi là "mới", sau đó ở một nơi khác tôi sẽ tạo một QShortcut cũng được gọi là "mới". Nó có gây ra vấn đề với Qt không?Tên các đối tượng của Qt có phải là duy nhất không?

Tôi biết về việc đặt tên đúng đối tượng (cái gì đó gọi là "mới" không phải là tên tốt) nhưng tôi chỉ muốn biết liệu tôi có cần phải cẩn thận hay không.

Trả lời

13

Tên đối tượng không bắt buộc phải là duy nhất. Tuy nhiên, có ít nhất hai điều tôi có thể nghĩ đến khi đặt tên đối tượng của bạn:

  • QObject :: findChild() - Một chức năng mà bạn có thể tìm kiếm QObject theo tên.
  • Tờ kiểu. Nếu bạn đã bao giờ chỉ định một biểu định kiểu cho một widget theo tên, nó sẽ áp dụng cho các đối tượng trong cấu trúc phân cấp bên dưới widget với kiểu đó có tên đó.
4

Những điều khác để xem xét:

  • Đối tượng không yêu cầu tên. Nếu bạn không sử dụng tên theo bất kỳ cách nào có ý nghĩa, bạn không cần phải đặt chúng. Tôi thường không đặt chúng cho các đối tượng một lần như QTimer và như vậy.
  • Nếu bạn đang sử dụng nhà thiết kế để tạo tệp .ui (không giống như bạn đang có, nhưng chỉ trong trường hợp), uic có xu hướng nhổ ra cảnh báo cho tên trùng lặp. Vì vậy, nếu bạn không muốn thấy những cảnh báo đó, hãy giữ tên trong tệp .ui duy nhất (nhà thiết kế có xu hướng thực thi điều này bằng cách chắp thêm _1, _2, v.v ... vào tên trùng lặp).
+1

Có cách nào để có tên trùng lặp trong thiết kế không? Điều này thật hữu ích với tôi. –

+0

@ A.Danesh Tại sao hữu ích khi có đối tượng có tên trùng lặp? –

+0

@ K3 --- rnc Tôi không nhớ chính xác, nhưng tôi nghĩ rằng tôi đã thiết lập một bảng định kiểu bằng cách sử dụng QApplication :: setStyleSheet (.) Cho một widget theo tên. Tôi muốn tất cả các vật dụng có cùng tên có cùng một biểu định kiểu. Mặc dù tác vụ này có thể được thực hiện bằng các cách khác, ví dụ: tài sản động, nhưng cách này dễ dàng hơn cho tôi cho dự án đó. –

Các vấn đề liên quan