当前位置:网站首页>QT addition calculator (simple case)

QT addition calculator (simple case)

2022-07-04 23:15:00 Yinzz2

Learn through a small case Qt

Realization function 1. Enter two numbers , Press “=” Button to display the calculation results
               2. Both operands must be legal numbers , Refuse to accept any illegal characters
               3. Both operands must be legal ,“=” The button is activated , Otherwise, disable ( You can't click )
               4. The control that displays the results can only be viewed and cannot be modified , But it supports copying to the clipboard
               5. The size and position of all sub windows are automatically adjusted to the best with the scaling of the main window

Code section :( Difficulties have notes )

test.h

#ifndef _TEST_H
#define _TEST_H

#include<QLabel>
#include<QLineEdit>        // Row edit control 
#include<QHBoxLayout>      // Horizontal placer 
#include<QDialog>
#include<QPushButton>
#include<QDoubleValidator> // Tester 

class sum:public QDialog
{
       Q_OBJECT
public:
         sum(void);
public slots:
    void enablebutton(void);
    void get_result(void);
private:
    QLineEdit* edit_x;
    QLineEdit* edit_y;
    QLineEdit* edit_z;
    QLabel* m_label;
    QPushButton* m_button;
};

#endif

test.cpp

#include<test.h>

sum::sum(void)
{
  /*--------**** Initialize each parameter ****---------------*/
    setWindowTitle(" Calculator ");

    edit_x = new QLineEdit(this);                      //this That is, the current parent class pointer 
    edit_x->setAlignment(Qt::AlignLeft);               // Align text left 
    edit_x->setValidator(new QDoubleValidator(this));  // Set up the digital verifier , Only numeric content can be entered 

    edit_y = new QLineEdit(this);
    edit_y->setAlignment(Qt::AlignLeft);
    edit_y->setValidator(new QDoubleValidator(this));

    edit_z = new QLineEdit(this);
    edit_z->setAlignment(Qt::AlignLeft);               // Set read-only 
    edit_z->setReadOnly(true);

    m_label = new QLabel("+",this);

    m_button = new QPushButton("=",this);
    m_button->setEnabled(false);                       // Initially set to disabled 
 /*--------**** Create a horizontal layout ****---------------*/
    QHBoxLayout* layout = new QHBoxLayout(this);
    layout->addWidget(edit_x);
    layout->addWidget(m_label);
    layout->addWidget(edit_y);
    layout->addWidget(m_button);
    layout->addWidget(edit_z);
    setLayout(layout);           // Set the layout 
 /*-------******** Slot function and signal ******----------------*/
    connect(edit_x,SIGNAL(textChanged(QString)),this,SLOT(enablebutton(void)));
    connect(edit_y,SIGNAL(textChanged(QString)),this,SLOT(enablebutton(void)));
    connect(m_button,SIGNAL(clicked(void)),this,SLOT(get_result(void)));
}

//text() Get input text (QString) toDouble() take QString Convert to Double
void sum::enablebutton(void)
{
    bool judge_x,judge_y;
    edit_x->text().toDouble(&judge_x);
    edit_y->text().toDouble(&judge_y);
    m_button->setEnabled(judge_x && judge_y);

}

//number(): take double convert to QString
//setText(const QString &text)
void sum::get_result(void)
{
    double res = edit_x->text().toDouble() + edit_y->text().toDouble();
    QString str = QString::number(res);
    edit_z->setText(str);
}

main.cpp

#include<test.h>
#include <QApplication>

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

Experimental phenomena :

原网站

版权声明
本文为[Yinzz2]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/185/202207042234031869.html