为qt creator中的函数添加单独的文件

时间:2017-05-04 07:26:15

标签: c++ qt function

Hii我是编程新手,我已经说过了解c ++和qt。我想创建一个简单的程序,用户从gui输入,然后将这些输入发送到一个函数(这是一个单独的头文件和cpp文件),该值在此函数中计算并再次显示在gui中。

我有三个文件,即main.cpp,(mainwindow.cpp& mainwindow.h)和(addition.cpp和addition.h)

我希望从mainwindow.ui(从lineedit)读取值,然后将它们发送到函数addition.cpp并进行评估并发送回mainwindow.cpp或mainwindow.ui(到lineedit)以便我可以访问此结果。

这是我正在尝试的代码

请帮助我理解这个过程

//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

1 个答案:

答案 0 :(得分:0)

  • MainWindow班级中,sumnum变量的类型必须为addition,因为您需要完整的类型才能连接到其信号/广告位< / p>

  • sumnum类应该有void add(flaot n1, float n2)之类的公共函数,因此您可以在on_addnum_clicked函数中调用它