使用 C++ 在 Qt GUI 应用程序中读取输入和打印阶乘

Read the input and print factorial in Qt GUI Application using C++

我使用 QTCreator 创建了 GUI 应用程序的设计。我想读取用户从 lineEdit 输入的输入,当单击 pushButton 时,它应该在同一页上打印输入数字的阶乘。我已经阅读了一些教程,但不明白如何使用 qtc++ 对此进行编码。

一个最小的例子是这样的:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QHBoxLayout>
class MainWindow : public QWidget
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:

    void hClicked();
    void hTextEdit(const QString& data);

private:
    QString m_linedata;
    QPushButton button;
    QLineEdit lineEdit;
    QHBoxLayout layout;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include <iostream>

MainWindow::MainWindow(QWidget *parent)
: QWidget(parent)
{
    layout.addWidget(&lineEdit);
    layout.addWidget(&button);
    this->setLayout(&layout);
    connect(&lineEdit, &QLineEdit::textChanged, this, &MainWindow::hTextEdit);
    connect(&button, &QPushButton::clicked, this , &MainWindow::hClicked);
}

MainWindow::~MainWindow()
{

}

static unsigned factorial(unsigned n)
{
    unsigned result = 1;
    for (unsigned i=1; i <= n; i++)  {
        result *= i;
    }
    return  result;
}


void MainWindow::hClicked()
{
    if (m_linedata.size() > 0) {
        bool res ;
        int toint = m_linedata.toInt(&res);
        if (res) {
            unsigned fact_result = factorial(toint);
            lineEdit.clear();
            lineEdit.setText(QString::number(fact_result));        }
    }
}

void MainWindow::hTextEdit(const QString &data)
{
    m_linedata = data;
}

和main.cpp

#include "mainwindow.h"

#include <QApplication>

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

对传递到辅助缓冲区的数据做任何你喜欢的事情。