2016-10-19 7 views
0

最近Qtを学び始めました。今は初心者です。だから私自身の最初の例として、私は以下の簡単な例を書いた。行編集ウィジェットに何も表示されない

例の名前はです。電卓です。これで2つのボタンとa の行編集が表示されます。それはここにある:

enter image description here

マイCalculator.hはこれです:

#ifndef CALCULATOR_H 
#define CALCULATOR_H 

#include<QDialog> 
#include "ui_Calculator.h" 

class Calculator : public QDialog, public Ui::Calculator 
{ 
    Q_OBJECT 

public: 
    Calculator(QWidget* parent = 0); 

private slots: 
    void myslot(); 
}; 

#endif // CALCULATOR_H 

そしてCalculator.cppはこれです:

#include <QtWidgets> 
#include "calculator.h" 

Calculator::Calculator(QWidget *parent) 
    :QDialog(parent) 
{ 
    setupUi(this); 

connect(oneButton,SIGNAL(clicked(bool)), this, SLOT(myslot())); 
} 

void Calculator::myslot(){ 
    lineEdit -> setText("1"); 
} 

そして、これはありますmain.cpp

#include <QApplication> 
#include <QDialog> 

#include "ui_Calculator.h" 

int main(int argc, char* argv[]) 
{ 
    QApplication app(argc, argv); 
    Ui::Calculator ui; 
    QDialog* dialog = new QDialog; 
    ui.setupUi(dialog); 
    dialog -> show(); 

    return app.exec(); 
} 

プログラムはエラーなく正常に実行されます。しかし、ボタンをクリックすると、行編集には何も印刷/表示されません。どうして?
問題を解決するために私のプログラムのどの部分を変更する必要がありますか?

+0

が含まれていませんか? – user1482030

+0

私はデザイナーによって定義しました。 _ui_Calculator.h_に存在します。 – Franky

+0

あなたはあなたの 'connect'呼び出しを以下に示す新しい構文に変更することができます:http://doc.qt.io/qt-5/signalsandslots.htmlシグナルスロット接続に関するいくつかの問題がある場合、エラー – Hayt

答えて

1

あなたのメインに間違ったクラスを設定しています。

カスタムCalculatorクラスを使用し、QDialogでは使用しないでください。

setupUiは要素を初期化するだけですが、Calculatorのコードは呼び出されません。あなたのメインは、次のようになります。

int main(int argc, char* argv[]) 
{ 
    QApplication app(argc, argv); 
    Calculator calc; //using your Calculator class. 
    calc.show();  
    return app.exec(); 
} 

、変数LINEEDITを定義しているが、ui_calculator.hcalculator.h

+0

ありがとうございました。私はこのように作品をすべきか:1-あなたのバージョンに本体を変える。 2- _Calculator.h_の_ui_calculator.h_を削除します。はい? – Franky

+0

@frankyはい、両方を行う必要があります。変更されたヘッダーがなければ、コードはコンパイルされません。 – Hayt

+0

私は上記の作業をしましたが、エラーが発生しました:_C:¥Users¥CS¥Documents¥Qt¥Calculator¥main.cpp:9:error: 'Calculator'はこのスコープで宣言されていませんでした Calculator calc; // Calculatorクラスを使用します。^_ AND _C:¥Users¥CS¥Documents¥Qt¥Calculator¥main。cpp:10:error: 'calc'がこのスコープで宣言されていません。 calc.show(); ^ _ – Franky

関連する問題