Tôi muốn biết nếu nó có thể phát ra một số tín hiệu cụ thể thông qua mã hóa .. Ví dụ, tôi muốn phát ra một sự kiện bấm nút khác mà không cần người dùng thực sự nhấp vào nút đó .. tôi có thể làm điều này không?Làm thế nào để tự tạo ra tín hiệu điều khiển khác phát ra?
Trả lời
Bạn có thể gọi chức năng click của nút kia. Nó sẽ phát ra tín hiệu được nhấp.
Tín hiệu được triển khai bên trong dưới dạng chức năng thành viên được bảo vệ bởi C++, vì vậy tôi khuyên bạn không nên làm như vậy. (Chúng được công khai trong Qt 5, mặc dù nó vẫn không được đề xuất như một giải pháp chung.)
Qt, thông qua moc, triển khai từ khóa phát ra, cho phép bạn phát ra tín hiệu mã hóa thông qua.
Nếu lớp bạn đang sử dụng không cung cấp phương thức phát ra tín hiệu, bạn có thể phân lớp tín hiệu và thực hiện một chức năng tự thực hiện. Nhưng tôi phải nói rằng tôi chưa bao giờ làm điều này cho các tín hiệu "bình thường". Chỉ làm điều đó khi tôi xác định tín hiệu của riêng tôi trong một số phần mở rộng lớp.
Thay vì tự phát tín hiệu và kết nối với khe, tại sao bạn không thể gọi trực tiếp khe? Các khe giống như các hàm C++ khác, theo nghĩa là bạn có thể gọi nó trực tiếp. Tôi không thấy bất kỳ lý do nào bạn phát ra tín hiệu được xác định trước (như clicked()
). Chỉ cần gọi trực tiếp vào khe của bạn.
để phát ra tín hiệu bạn chỉ cần viết
phát tín hiệuName (danh sách param);
#include <QObject>
class myClass : public QObject
{
Q_OBJECT
public:
myClass (QObject *parent = 0) : QObject(parent) { }
void foo();
signals:
void mySignal(int param);
};
void myClass::foo() { emit mySignal(5); }
đọc thêm tại http://doc.qt.io/qt-4.8/signalsandslots.html
bạn cũng có thể kết nối một tín hiệu đến tín hiệu khác, do đó bạn có thể kết nối mysignal đến các nút bấm tín hiệu và khi tín hiệu của bạn được emited tín hiệu nhấp cũng sẽ được emited thấy http://doc.qt.io/qt-4.8/qobject.html#connect
nếu bạn đặt hành động cho nút, bạn cũng có thể chỉ cần gọi hành động được kích hoạt. Chỉ cần sử dụng action_of_the_button->trigger();
!
- 1. Qt QNetworkAccessManager không phát ra tín hiệu
- 2. Làm thế nào để phát ra tín hiệu từ QPushButton khi chuột di chuột qua nó?
- 3. Làm thế nào để tạo ra một điều khiển nhanh chóng Datagrid WPF từ đầu?
- 4. Qt buộc QCheckBox phát ra tín hiệu trên setChecked
- 5. phát ra std :: chuỗi với tín hiệu qt
- 6. Bàn điều khiển PartCover tạo ra đầu ra trống xml
- 7. Làm cách nào để phát ra System.Linq.Expression?
- 8. Không hiệu quả khi phát ra QByteArray?
- 9. Làm thế nào để lấy đối số Gỡ lỗi CoreData để xuất ra bàn điều khiển?
- 10. Tìm ra điều khiển nào tập trung
- 11. Đường ray tạo ra Bộ điều khiển Phiên
- 12. Làm thế nào để tạo ra một Clojure Lint?
- 13. Điều gì xảy ra nếu trong quá trình xử lý tín hiệu trong UNIX, tín hiệu tương tự sẽ được gửi đến chương trình?
- 14. Làm thế nào để tìm ra khi nào điều khiển được hiển thị cho người dùng?
- 15. Cho htmlHelper + tên hành động, làm thế nào để tìm ra tên bộ điều khiển?
- 16. 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
- 17. Nhận tín hiệu âm thanh loa và sau đó phát trực tuyến ra
- 18. Làm thế nào để tạo ra stacktrace javascript?
- 19. Làm thế nào để phát hiện ra rằng JavaScript và/hoặc Cookies bị vô hiệu hóa?
- 20. Tín hiệu sự kiện được phát ra hai lần mỗi lần
- 21. Tín hiệu Qt và Khe cắm được kết nối hai lần ... điều gì sẽ xảy ra?
- 22. Làm thế nào để tạo ra một cây Expression để làm tương tự như "StartsWith"
- 23. Làm thế nào để chuyển hướng (Rack) Đầu ra máy chủ mỏng đến bàn điều khiển?
- 24. Làm thế nào để khởi động Tomcat với đầu ra trên bàn điều khiển trong Linux?
- 25. Làm thế nào để sắp xếp chuỗi trên giao diện điều khiển đầu ra
- 26. C# - Làm thế nào để tạo ra một vòng lặp vô hạn không thể phát hiện?
- 27. Đầu ra bàn điều khiển MATLAB
- 28. Làm thế nào để tạo ra các thực thể HTML đầu ra của Beautiful Soup?
- 29. Làm thế nào để tạo ra cây kỹ năng?
- 30. Làm thế nào để tạo ra một mảng toàn cầu?
Đôi khi bạn muốn truy cập người gửi() trong vùng. Điều đó không có tác dụng khi gọi trực tiếp vị trí – Ben