2012-04-05 64 views
0

我在調用QT創建器中不同類中的函數時遇到問題。Qt Creator,調用函數

在此,在主類mainWindow.cpp,我請從studentsearcher.cpp 的功能這是當用戶按下按鈕時發生的功能,並且問題是與此

void MainWindow::on_FindButton1_clicked(){ 

     StudentSearcher searchStudent; 
     searchStudent.exec(); 
     searchStudent.search_id(55); // <---- the problem 
} 

這將產生2個以下錯誤消息:

1.undefined reference to StudentSearcher::search_id(int) 
2.collect2: ld returned 1 exit status 

這裏是StudentSearcher.h文件的一部分:

class StudentSearcher : public QDialog 
{ 
    Q_OBJECT 

public: 
    explicit StudentSearcher(QWidget *parent = 0); 

    void search_id(int idNum); 

    ~StudentSearcher(); 

private slots: 

private: 
    Ui::StudentSearcher *ui; 

這裏是在函數的定義studentSearcher.cpp

void search_id(int idNum){ 
int idNumber = idNum; 

} 

我一直在努力,現在解決這個長一段時間,我已經嘗試了一些非常愚蠢的事情是這樣的:searchStudent.exec(search_id(55));

並認爲它不會工作,因爲我認爲.exec()是構造函數的一部分....對不起,我有點與編程和QT nooby,但...我似乎無法圖瞭解如何讓這個愚蠢的事情發揮作用。我已經嘗試了很多東西,但無濟於事...

回答

4

您的search_id實現是一項免費功能。你需要使它成爲一個成員函數:

void StudentSearcher::search_id(int idNum){ 
    int idNumber = idNum; 
} 
+0

嘿,當我用你所放置的函數替換函數時,它有一個頭文件的問題。它一直這樣說:額外的資格'StudentSearcher ::'在成員'search_id' – Gabe 2012-04-05 18:17:41

+0

修正了它,在cpp文件的頭部和頂部,函數必須像以前那樣聲明,但是在定義時聲明瞭它你建議的方式。 – Gabe 2012-04-05 18:27:37