2017-05-04 3 views
0

Hii私はプログラミングには新しいです。私はC++とqtについて学んだことが述べてあります。私はユーザーがguiから入力を与える簡単なプログラムを作りたいと思っています。これらの入力は関数(これは別々のヘッダとcppファイルです)に送られ、値はこの関数で評価され、guiに再び表示されます。Qtクリエーターの機能のために別々のファイルを追加する

私はから(値がmainwindow.uiから読み込まれることを望む3つのファイル、すなわちmain.cppに、(mainwindow.cpp & mainwindow.h)、および(addition.cppとaddition.h)

を持っていますlineedit)それらは次に関数addition.cppに送られて評価され、mainwindow.cppまたはmainwindow.ui(lineeditに)に送り返され、この結果にアクセスできるようになります。ここ

はプロセスごMainWindowクラスで

//main.cpp 
    #include "mainwindow.h" 
#include <QApplication> 

    int main(int argc, char *argv[]) 
    { 
     QApplication a(argc, argv); 
     MainWindow w; 
     w.show(); 

     return a.exec(); 
    } 

//mainwindow.h. 
#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include "addition.h" 
#include <QMainWindow> 

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 
    QObject *sumnum; 


private: 
    Ui::MainWindow *ui; 
    float number1,number2; 

public slots: 
    void results(float); 
private slots: 
    void on_addnum_clicked(); 
}; 

#endif // MAINWINDOW_H 

//mainwindow.cpp. 
#include "mainwindow.h" 
#include "ui_mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    sumnum = new QObject(this); 
    connect(sumnum,SIGNAL(add(float)),this,SLOT(results(float))); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 



void MainWindow::results(float answer) 
{ 
    ui->sum->setText(QString::number(answer)); 
} 

void MainWindow::on_addnum_clicked() 
{ 
    addresult(ui->num1->text().toDouble(),ui->num2->text().toDouble()); 
} 

//addition.h 
#ifndef ADDITION_H 
#define ADDITION_H 

#include <QObject> 

class addition : public QObject 
{ 
    Q_OBJECT 
public: 
    explicit addition(QObject *parent = 0); 
    void run(float, float); 

private: 
    float answer; 

signals: 
    void add(float); 

public slots: 
}; 

#endif // ADDITION_H 

//addition.cpp 
#ifndef ADDITION_H 
#define ADDITION_H 

#include <QObject> 

class addition : public QObject 
{ 
    Q_OBJECT 
public: 
    explicit addition(QObject *parent = 0); 
    void run(float, float); 

private: 
    float answer; 

signals: 
    void add(float); 

public slots: 
}; 

#endif // ADDITION_H 

答えて

0
  • を理解する上で私を助けてください、私は

    をしようとしていたコードであり、sumnum変数の型は、あなたがよのでadditionなければなりません信号/スロットに接続するために完全なタイプが必要

  • sumnumクラスvoid add(flaot n1, float n2)のような公共の機能を持っている必要がありますので、

+0

は斐伊川あなたは上記のコードを修正することができ、あなたのon_addnum_clicked機能でそれを呼び出すことができます。 –

+0

信号をあなたのスロットに接続するには、ob QObjectの代わりにクラスのオブジェクトを作成する必要があります: 'sumnum = new QObject(this);を' sumnum = new addition(this); 'add'クラスは' add'シグナルを定義します。 – xander

関連する問題