Có thể gắn nhiều hơn một tín hiệu vào một vị trí (không phải là?). Vì vậy, có cách nào để hiểu được widget nào gửi tín hiệu? Tôi đang tìm một cái gì đó như đối số sender
của sự kiện trong .NETCách nhận tiện ích người gửi bằng cơ chế tín hiệu/khe?
Trả lời
QObject::sender()
sẽ thực hiện công việc.
Có, bạn có thể kết nối nhiều tín hiệu với một vị trí. Trong trường hợp này, bạn sẽ sử dụng QSignalMapper
để phân biệt các nguồn tín hiệu. Giải pháp này được giới hạn trong các tín hiệu không tham số. Bạn có thể xem ví dụ here.
Sử dụng QObject::sender()
trong khe, như trong ví dụ sau:
void MainWindow::someSetupFunction(void)
{
...
connect(_foobarButton, SIGNAL(clicked()), this, SLOT(buttonPressedSlot()));
}
void MainWindow::buttonPressedSlot()
{
// e.g. check with member variable _foobarButton
QObject* obj = sender();
if(obj == _foobarButton)
{
...
}
// e.g. casting to the class you know its connected with
QPushButton* button = qobject_cast<QPushButton*>(sender());
if(button != NULL)
{
...
}
}
1 cho một ví dụ thực tế. – MDMoore313
không phải là qobject_cast tốt hơn dynamic_cast thuần túy? – elephant
@elephant Có, như được mô tả trên http://doc.qt.io/qt-4.8/metaobjects.html. Điều này cần được cải thiện trong câu trả lời. – Johannes
- 1. Nhận thông báo/sự kiện/tín hiệu khi tiện ích Qt được lấy nét
- 2. Gửi tin nhắn đến người dùng qua tín hiệu django
- 3. id tiện ích twitter động
- 4. Gửi Biểu mẫu với Cơ chế (Python)
- 5. Xác thực tiện ích mở rộng bằng chrome bằng cách sử dụng Facebook
- 6. Gridster xóa tiện ích bằng cách kéo vào div
- 7. Gửi yêu cầu XHR từ tiện ích mở rộng của Chrome bằng cookie
- 8. Lớp cơ sở so với Lớp tiện ích
- 9. Cách gửi tin nhắn TỪ ứng dụng gốc tới tiện ích của Chrome?
- 10. Nhận các tiện ích mở rộng của một UTType
- 11. Tiện ích WPF hữu ích
- 12. Cách hiển thị nhiều tiện ích trên cùng một trang bằng cách sử dụng MVC
- 13. PyQt - hiển thị tiện ích ở đầu tiện ích
- 14. Facebook gửi hộp thoại đến nhiều người bạn bằng cách sử dụng một mảng người nhận
- 15. openssl nhận tiện ích mở rộng chứng chỉ
- 16. Tín hiệu khi một tiện ích mất tiêu điểm là gì?
- 17. Tiện ích Android không thể nhận được thông báo DATE_CHANGED
- 18. Làm cách nào để nhận văn bản hiện tại từ tiện ích QTextEdit hoặc QPlainTextEdit?
- 19. Cách nhận thanh toán bằng thẻ tín dụng?
- 20. PHP nhận cơ chế yêu cầu PUT
- 21. AngularJS cách liên kết dữ liệu với tiện ích SVG
- 22. Tín hiệu phát ra nếu tất cả các tiện ích con bị mất tiêu điểm
- 23. Mặt nạ được nhập bằng tiện ích EditText trong Android
- 24. LibGDX và ScrollPane với nhiều tiện ích
- 25. jQuery trong tiện ích
- 26. Làm cách nào để tìm xem liệu yêu cầu Ajax gửi thành công bằng tiện ích bổ sung Fire-bug?
- 27. Tiện ích so sánh tệp
- 28. Backbone.js Tiện ích
- 29. Android - Tùy chỉnh tiện ích Spinner Nhìn và cảm nhận
- 30. Thiết lập TkHtml (tiện ích Tk) bằng Python
liên kết là chết ... – MDMoore313
cố định liên kết. Cảm ơn! –
Liên kết đã chết lại = [ – Troyseph