【问题标题】:Read the input and print factorial in Qt GUI Application using C++使用 C++ 读取 Qt GUI 应用程序中的输入和打印阶乘
【发布时间】:2020-11-08 22:12:06
【问题描述】:

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

【问题讨论】:

    标签: c++ qt qtgui qpushbutton


    【解决方案1】:

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

    主窗口.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
    

    主窗口.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();
    }
    

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

    【讨论】:

    • 据我所知,用户需要如何连接信号和插槽。我猜他已经知道阶乘函数了。
    • 非常感谢@IlianZapryanov 的回复。这真的很有帮助。现在我对此有了一个想法。
    猜你喜欢
    • 1970-01-01
    • 2019-01-31
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2011-03-22
    • 2020-12-13
    • 2011-06-26
    相关资源
    最近更新 更多