2013-12-14 24 views
6

Potrzebuję programatycznie przypisać sygnał valueChanged z QLineEdit do niestandardowego gniazda. Wiem, jak wykonać połączenie za pomocą Qt Designer i robić połączenie z interfejsem graficznym, ale chciałbym to zrobić programowo, abym mógł dowiedzieć się więcej o sygnałach i gniazdach.Jak podłączyć wartość sygnału z QLineEdit do niestandardowego gniazda w Qt

To jest to, co mam, to nie działa.

plik .cpp

// constructor 
connect(myLineEdit, SIGNAL(valueChanged(static QString)), this, SLOT(customSlot())); 

void MainWindow::customSlot() 
{ 
    qDebug()<< "Calling Slot"; 
} 

plik .h

private slots: 
    void customSlot(); 

Co ja tu brakuje?

Dzięki

Odpowiedz

15

QLineEdit nie wydaje się mieć valueChanged sygnał, ale textChanged (zapoznać się z dokumentacją Qt dla Pełną listę obsługiwanych sygnałów). Należy również zmienić swoje wywołanie funkcji connect(). Powinno być:

connect(myLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(customSlot())); 

Jeśli potrzebujesz uchwyt nową wartość tekstową w swoim gnieździe, można określić go jako customSlot(const QString &newValue) zamiast, więc gra będzie wyglądać następująco:

connect(myLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(customSlot(const QString &))); 
+0

Zmieniono valueChanged do TextChanged i static QString do const QString i and worked. Nie wiem, jak to przeoczyłem, szczególnie statyczne QString (wow), wielkie dzięki. Również dziękuję za drugi przykład, ponieważ zastanawiałem się również nad wykorzystaniem tego parametru. Wielkie dzięki –