2009-07-15 31 views
6

Tôi gặp lỗi xây dựng với một khe trong Qt. Tôi có một lớp trong đó có một khe cắm công cộng:Qt và C++ - tham chiếu không xác định đến vị trí

void doSomething(); 

Trong constructor của lớp này tôi làm:

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

Tôi có QLineEdit - đối tượng textFrom. Các lỗi build là

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

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

giúp tôi, xin vui lòng (:

+0

này không có vẻ như đủ thông tin thực sự. Nếu bạn bình luận ra câu lệnh kết nối của bạn thì lỗi đó có biến mất không? – dborba

Trả lời

15

trống doSomething(); trông giống như một snip từ tập tin tiêu đề, bạn đã thực hiện các khe tự

1

lưu ý nhanh chóng về cú pháp? : Thông thường, bạn sẽ sử dụng một trong hai

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

mà về cơ bản là tương đương với

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

Bạn sẽ làm gì nếu bạn đang gọi từ đâu đó không nằm trong QObject.
Khi cú pháp này:

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

cũng hợp lý. Nhưng cú pháp này:

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

chỉ là mã khó hiểu và trùng lặp.

+0

... và ném cảnh báo trình biên dịch, vì 5-arg QObject :: connect() là một phương thức tĩnh ... –

0

Tôi đã gặp lỗi tương tự trong bản dựng Qt.

tôi đã bổ sung thêm một khe cắm cho các tín hiệu xong từ Qprocess - doco mà nói:

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

Mã của tôi:

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; 
} 

biên soạn các mục đã tạo ở trên: /home/ttguy/kdenlive/kdenlive_git/build-kdenlive-Desktop-Default/src/moc_freesound.cpp:121: lỗi: undefined tham chiếu đến `FreeSound :: slotPreviewFinished (int, QProcess :: ExitStatus)'

Và việc sửa chữa là tiền tố thực hiện của tôi slotPreviewFinished với Freesound ::

void FreeSound::slotPreviewFinished(int exitCode, QProcess::ExitStatus exitStatus) 
{ 
    qDebug()<<"// slotPreviewFinished: "<<exitCode; 
} 
Các vấn đề liên quan