2010-10-28 17 views

Trả lời

5

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.

+0

liên kết là chết ... – MDMoore313

+1

cố định liên kết. Cảm ơn! –

+0

Liên kết đã chết lại = [ – Troyseph

97

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

} 
+11

1 cho một ví dụ thực tế. – MDMoore313

+1

không phải là qobject_cast tốt hơn dynamic_cast thuần túy? – elephant

+1

@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

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