2012-04-04 24 views

Trả lời

14

Vâng, tùy thuộc vào cách bạn lên kế hoạch truy cập vào QObject sau này. Có một số hàm QObject.find() mà bạn có thể sử dụng để truy cập vào QObject. Tên này thêm một "khóa" để lọc tìm kiếm của bạn. Ví dụ: Trong lớp của riêng bạn, bạn có thể sử dụng các biến mẫu cho thay vì thực hiện tìm kiếm, nhưng thực tế bạn có thể truyền một thứ mà bạn thường không sở hữu, nhưng bạn biết có một nút cụ thể mà bạn muốn chỉnh sửa (ví dụ, A QPushButton trong một trong QtputDialogs được xây dựng trong Qt). Đặt tên cho nút giúp dễ tìm (và mạnh mẽ nếu nút biến mất, di chuyển trong bố cục, v.v.), trong khi kiểm tra văn bản nút hoặc đếm vị trí trong cấu trúc phân cấp sẽ dễ vỡ hơn (ví dụ: nút văn bản có thể thay đổi giữa các phiên bản hoặc do bản địa hóa, ai đó thêm bố cục mới, nút bổ sung).

Hoặc bạn chỉ có thể muốn một số văn bản gỡ lỗi tốt đẹp khi bạn đang in giá trị con trỏ (tức là bạn muốn biết QObject nào đang gây ra sự cố). Nó cũng làm cho kịch bản dễ dàng hơn, nhưng tôi sẽ không giải thích tại sao ở đây.

Đây thực sự chỉ là đỉnh của tảng băng trôi. Bạn thực sự chỉ cần đặt tên nếu bạn có nhu cầu và chỉ bạn mới biết câu trả lời đó. :-)

5

Nó có ý nghĩa trong trường hợp đối tượng là kịch bản, và có thể được sử dụng với findChild như thế này

//button is the object name, which needs to be define in qml for the component.e.g. objectName: "button" 
QObject *buttonQML = view.rootObject()->findChild<QObject*>("button"); 

nơi "nút" là tên đối tượng

6

Có một vài lý do, một trong những những lý do lớn tôi sử dụng tên đối tượng là nhằm mục đích gỡ lỗi như được nêu ra in the Qt qdebug guide.

10

Bạn có thể sử dụng tên của đối tượng dưới dạng ID Selector trong Trang tính kiểu Qt.

Ví dụ: nếu bạn muốn có một tài sản để chỉ áp dụng cho một QLineEdit cụ thể, bạn có thể cho nó một cái tên sử dụng QObject :: setObjectName() và sử dụng một Selector ID để tham khảo với nó:

myDialog->setStyleSheet("QLineEdit#nameEdit { background-color: yellow }"); 
Các vấn đề liên quan