Để kết nối tín hiệu với các khe, theo như tôi biết, các thông số của tín hiệu cần phải khớp với các thông số của khe. Ví dụ:Kết nối tín hiệu với các khe với giá trị không đổi
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(closeDockWidget()));
Nhưng nếu tôi muốn có tín hiệu gọi là vị trí có số lượng thông số khác nhau nhưng luôn chuyển giá trị không đổi vào vị trí. Ví dụ: sử dụng đoạn mã trên:
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(setDockWidget(false)));
Hoặc nói cách khác, bất cứ khi nào nút được nhấn, hàm này gọi hàm sai là tham số sai. Điều này có thể không?
Câu trả lời này không còn thực sự hợp lệ, vì cú pháp Qt5 trên C++ 11 làm cho nó khá dễ sử dụng một lambda cho mục đích này. –
@ André, Ở phía bên kia, bạn chỉ có thể 'tạo ra khe proxy, mà sẽ gọi mong muốn một.' bây giờ tại chỗ – Lol4t0
Chắc chắn, bạn có thể. Nhưng một khe phụ có nghĩa là nhiều thứ hơn trong tiêu đề bạn không muốn, phơi bày với các cuộc gọi bên ngoài (vâng, ngay cả khi một khe riêng có thể được gọi từ bên ngoài) và lan rộng xung quanh mã của bạn trên nhiều vị trí. Bạn thậm chí có thể cần thêm các biến thành viên để chứa các giá trị bạn muốn chuyển, do đó giới thiệu trạng thái bổ sung trong lớp của bạn. Giải pháp lambda thanh lịch hơn nhiều đến nỗi nó loại bỏ sự ra đời của một khe proxy như một giải pháp IMO. –