2009-07-15 18 views
6

Mam błąd kompilacji z gniazdem w Qt. Mam klasy, która ma gniazdo publicznych:Qt i C++ - niezdefiniowane odniesienie do gniazda

void doSomething(); 

w konstruktorze tej klasy I zrobić:

this->connect(ui->textFrom, SIGNAL(returnPressed()), 
       this, SLOT(doSomething())); 

mam QLineEdit - obiekt textFrom. Błąd kompilacji jest

../moc_mainwindow.cpp:66: undefined reference to `MainWindow::doSomething()' 

:-1: error: collect2: ld returned 1 exit status

Pomóż mi, proszę (:

+0

To nie wydaje się wystarczająco dużo informacji naprawdę. Jeśli skomentujesz swoje oświadczenie dotyczące połączenia, czy błąd zniknie? – dborba

Odpowiedz

15

void doSomething(); wygląda jak wycinek z pliku nagłówka, czy się wdrożyć szczelinę

1

krótka notatka o składni? : Zwykle chcesz użyć

connect(from, SIGNAL(sig()), to, SLOT(slot())); 

, która jest w zasadzie równoważne

QObject::connect(from, SIGNAL(sig()), to, SLOT(slot())); 

Co zrobisz, jeśli dzwonisz skądś nie wewnątrz QObject.
Podczas tej składni:

to->connect(from, SIGNAL(sig()), SLOT(slot())); 

jest również rozsądna. Ale ta składnia:

to->connect(from, SIGNAL(sig()), to, SLOT(slot())); 

jest tylko mylące i duplikatów kod.

+0

... i generuje ostrzeżenie kompilatora, ponieważ 5-arg QObject :: connect() jest metodą statyczną ... –

0

Otrzymałem ten sam błąd w kompilacji Qt.

byłem dodając gniazdo dla sygnału zakończeniu z Qprocess - w doco w którym mówi:

void QProcess::finished(int exitCode, QProcess::ExitStatus exitStatus) 

Mój kod:

freesound.h

void slotPreviewFinished(int exitCode, QProcess::ExitStatus exitStatus); 

freensound. cpp

m_previewProcess = new(Qprocess); 
connect (m_previewProcess ,SIGNAL (finished(int , QProcess::ExitStatus)),this,SLOT(slotPreviewFinished(int , QProcess::ExitStatus))); 

void slotPreviewFinished(int exitCode, QProcess::ExitStatus exitStatus) 
{ 
    qDebug()<<"// slotPreviewFinished: "<<exitCode; 
} 

kompilacji powyżej generowane: /home/ttguy/kdenlive/kdenlive_git/build-kdenlive-Desktop-Default/src/moc_freesound.cpp:121: error: niezdefiniowane odniesienia do `FreeSound :: slotPreviewFinished (int, QProcess :: ExitStatus)”

I poprawka miała poprzedzić mój realizację slotPreviewFinished z FreeSound ::

void FreeSound::slotPreviewFinished(int exitCode, QProcess::ExitStatus exitStatus) 
{ 
    qDebug()<<"// slotPreviewFinished: "<<exitCode; 
} 
Powiązane problemy