Qt Creator, вызовите функцию

У меня проблема с вызовом функции в другом классе в создателе QT.

Здесь, в основном классе 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, но ... Я не могу понять, как заставить эту глупость работать. Я много чего пробовал, но безуспешно ...


person Gabriel    schedule 05.04.2012    source источник


Ответы (1)


Ваша реализация search_id - это бесплатная функция. Вам нужно сделать его функцией-членом:

void StudentSearcher::search_id(int idNum){
    int idNumber = idNum;
}
person Community    schedule 05.04.2012
comment
Привет, когда я заменил функцию на то, что вы поставили, у нее возникла проблема с файлом заголовка. Он все время повторял: дополнительная квалификация "StudentSearcher ::" для члена "search_id" - person Gabriel; 05.04.2012
comment
Исправлено, в заголовке и в верхней части файла cpp функцию нужно было объявить, как я это делал раньше, но в определении она была объявлена ​​так, как вы предложили. - person Gabriel; 05.04.2012