2017-11-05 2 views
0

QT로 게임을하고 있었는데 작은 문제가 있음을 발견했습니다. (나는 Qt에서 정말로 새로운 것이다.) 그걸 검색 한 후에 아무것도 찾지 못했습니다. 헤더 파일에서 : 문제가QComboBox를 QT에서 함수 입력 인수로 사용

#include <QMainWindow> 
    namespace Ui { 
class jAudio; 
} 

class jAudio : public QMainWindow 
{ 
    Q_OBJECT 

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

    ~jAudio(); 

private: 
    Ui::jAudio *ui; 

private slots: 
    void jSetup (void); 
    void jInfo (QString); 
    void jFillComboBox(QComboBox, QStringList); 
    void on_bRecord_clicked(); 
}; 

그리고 내가 좋아하는 .cpp 파일에 메소드를 선언 : 다음 오류 코드를 실행하려고하면

#include "jaudio.h" 
#include "ui_jaudio.h" 
void jAudio::jFillComboBox(QComboBox comboBox, QStringList data){ 
    for (int i = 0; i< options.count(); i++){ 
     comboBox->addItem(data[i],i); 
    } 
} 

이 나타납니다

..../jAudio/jaudio.h:25: error: 
‘QComboBox’ has not been declared 
void jFillComboBox(QComboBox, QStringList); 

내가 뭘 잘못하고 있는지 알아?

Thnak very much !!

+0

헤더에 소스 파일이 포함되어 있지 않습니다. – quinz

+0

Qt에서와 마찬가지로 C++에서도 새로운 기능을 제공 할 수 있습니다. 아무 것도 포함하지 않을뿐만 아니라, 당신은 그것이 효과가 있다는 것을 알지 못하면 임의의 객체를 값으로 전달하지 않아야합니다. 'QComboBox'는 포인터 또는'QComboBox *'로 전달되어야합니다. – AlexanderVX

+0

안녕하세요. 나는 그 질문에 포함 된 것을 복사하지 않았다는 것을 알았습니다. 헤더 파일에는 "#include "과 .cpp 파일에 다음과 같이 두 가지가 있습니다. #include "jaudio.h" #include "ui_jaudio.h" –

답변

0

jAudio.h : #include <QComboBox>#include <QStringList>을 추가하십시오. 그리고 앞에서 언급 한대로 jFillComboBoxjFillComboBox(QComboBox*, QStringList)으로 변경하십시오. 두 번째 부분에 대한 이유는 QComboBoxQWidget에서 파생되었으며 QWidget 개체를 복사 할 수 없다는 것입니다. 다른 상위 수준 언어를 사용하는 경우 복사 할 수없는 객체와 포인터 (참조)가 아닌 개념이 외국어 일 수 있습니다. 그렇다면 this question과 거기에있는 링크를 통해 살펴 보시기 바랍니다.