2010-07-03 31 views

Trả lời

5

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.

0

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.)

0

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.

3

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.

+1

Đô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

0

để 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

0

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();!

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