2017-11-05 20 views
0

私はQTで遊んでいましたが、小さな問題が見つかりました。 (私はQtで本当に新しいです)。 それを検索した後、何も見つかりませんでした。 問題がある:QTの関数入力引数としてのQComboBox

#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 you very much !!

+0

ヘッダーにもソースファイルにも含まれていません – quinz

+0

あなたはQtと同じようにC++で新しいかもしれません。含まれていないだけでなく、あなたは、それがうまくいくことを知らずに、任意のオブジェクトを価値によって渡すべきではありません。 'QComboBox'はポインタまたは' QComboBox * 'として渡されます。 – AlexanderVX

+0

こんにちは。私はちょうど私が質問に含まれてコピーしていないことに気づきます。ヘッダーファイルには、#include と.cppファイルの2つがあります。#include "jaudio.h" #include "ui_jaudio.h" –

答えて

0

jAudio.hの場合:#include <QComboBox>#include <QStringList>を追加します。コメントに前述したように、jFillComboBoxjFillComboBox(QComboBox*, QStringList)に変更してください。 2番目の部分の理由は、QComboBoxQWidgetから派生し、QWidgetオブジェクトをコピーできないということです。他の上位レベルの言語を使用している場合は、コピーできないオブジェクトとポインタによる参照(または参照)という概念は、あなたにとっては外国のものかもしれません。その場合は、this questionとそのリンクを調べてみることを検討してください。

関連する問題