2016-12-02 152 views
-1

我得到這個問題: 的main.cpp:13:20:錯誤:「GetGrade」在此範圍 GetGrade(examGrade)未聲明;「GetGrade」在此範圍內未聲明

我的代碼:

的main.cpp

#include "examGrade.hpp" 

int main(int argc, char* argv[]) 
{ 
    //Qt Application 
    QApplication app(argc, argv); 

    QFont font("DejaVu Sans", 18); 

    ExamGradeInput* examGrade = new ExamGradeInput(); 
    examGrade->setFont(font); 

    GetGrade(examGrade); 
    QLabel* label = new QLabel("&Exam grade: "); 
    label->setFont(font); 
    label->setBuddy(examGrade); 

    QHBoxLayout* layout = new QHBoxLayout(); 
    layout->addWidget(label); 
    layout->addWidget(examGrade); 

    //Create and display window 

    QWidget* window = new QWidget(); 
    window->setWindowTitle("Exam grade Window"); 
    window->setLayout(layout); 
    window->show(); 
    return app.exec(); 
} 

examGrade.cpp

#include "examGrade.hpp" 

ExamGradeInput::ExamGradeInput(QWidget* parent): QSpinBox(parent) 
{ 
    this->setRange(0, 100); 
} 

int GetGrade(ExamGradeInput* examGrade){ 

    int grade = (examGrade->text()).toInt(); 
    return grade; 
} 

examGrade.hpp

#pragma once 
#include <QtWidgets> 

//exaGradeInput inherits from public QSpin Box 
class ExamGradeInput: public QSpinBox 
{ 
    public: 
     ExamGradeInput(QWidget* parent = 0); 
     int GetGrade(ExamGradeInput* examGrade); 
}; 

不能完全肯定是我出了紕漏,新的C++和Qt,b這樣做大約一個星期。

在此先感謝

+1

刪除所有不相關的問題的代碼。這裏至少有99%的代碼。 –

回答

2

您的代碼:

#include "examGrade.hpp" 

ExamGradeInput::ExamGradeInput(QWidget* parent): QSpinBox(parent) 
{ 
    this->setRange(0, 100); 
} 

int GetGrade(ExamGradeInput* examGrade){ 

    int grade = (examGrade->text()).toInt(); 
    return grade; 
} 

應該是:

#include "examGrade.hpp" 

ExamGradeInput::ExamGradeInput(QWidget* parent): QSpinBox(parent) 
{ 
    this->setRange(0, 100); 
} 

int ExamGradeInput::GetGrade(ExamGradeInput* examGrade){ 

    int grade = (examGrade->text()).toInt(); 
    return grade; 
} 

GetGrade是你的類ExamGradeInput內聲明的函數,我會建議類成員閱讀了功能定義:

快速谷歌搜索帶來up: https://www.tutorialspoint.com/cplusplus/cpp_class_member_functions.htm

0

除了其他評論,你真的不需要通過指針舉辦這麼多事情。喜歡用值而不是指針來保存對象。我也質疑getGrade的接口:它是一個作用於對象的方法,對象不必顯式傳遞給它。您也不必在所有內容中明確設置字體:除了QLabel之外,父字體將由子級繼承。這裏有一個完整的例子:

#include <QtWidgets> 

class ExamGradeInput: public QSpinBox 
{ 
    public: 
     ExamGradeInput(QWidget* parent = 0) {} 
     int getGrade() const { return value(); } 
}; 

int main(int argc, char* argv[]) 
{ 
    QApplication app(argc, argv); 

    QWidget window; 
    QHBoxLayout layout(&window); 
    window.setFont({"DejaVu Sans", 18}); 

    ExamGradeInput examGrade; 
    examGrade.getGrade(); 
    QLabel label("&Exam grade: "); 
    label.setBuddy(&examGrade); 
    label.setFont(window.font()); 

    layout.addWidget(&label); 
    layout.addWidget(&examGrade); 

    window.setWindowTitle("Exam grade Window"); 
    window.show(); 
    return app.exec(); 
}