QT study DAY2

发布于:2025-03-04 ⋅ 阅读:(11) ⋅ 点赞:(0)

作业

代码

Widget.h

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void save_data(const QString& filename,const QString& data);
private slots:
    void on_lineEdit_textChanged();                //账户栏
    void on_lineEdit_2_textChanged();              //密码栏
    void on_radioButton_clicked(bool checked);     //显示密码
    
    //新增代码
    void on_logButton_clicked();        //登录按钮
    void on_listWidget_itemDoubleClicked(QListWidgetItem *item);    //listWidget双击

private:
    Ui::Widget *ui;
    QFile file;
};
#endif // WIDGET_H

Widget.cpp

//新增代码

//登录按键 点击事件
void Widget::on_logButton_clicked()     
{

    QString name = ui->lineEdit->text();
    QList<QListWidgetItem *> res = ui->listWidget->findItems(name,Qt::MatchExactly);

    if(res.isEmpty())
    {
        ui->listWidget->addItem(name);
    }
}
//listWidget 双击事件
void Widget::on_listWidget_itemDoubleClicked(QListWidgetItem *item) 
{
    int row = ui->listWidget->row(item);
    ui->listWidget->takeItem(row);
}

效果

双击之前

双击之后

作业

代码

Widget.h

class Widget : public QWidget
{
    Q_OBJECT

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

private slots:
    // 数字按键部分
    void on_pushButton_0_clicked();
    void on_pushButton_1_clicked();
    void on_pushButton_2_clicked();
    void on_pushButton_3_clicked();
    void on_pushButton_4_clicked();
    void on_pushButton_5_clicked();
    void on_pushButton_6_clicked();
    void on_pushButton_7_clicked();
    void on_pushButton_8_clicked();
    void on_pushButton_9_clicked();
    // 加减乘除
    void on_pushButton_add_clicked();
    void on_pushButton_sub_clicked();
    void on_pushButton_mul_clicked();
    void on_pushButton_div_clicked();
    // 其他按键
    void on_pushButton_clear_clicked();
    void on_pushButton_res_clicked();
private:
    Ui::Widget *ui;
    QString str;    // 第一个数
    QString ch;     // 加减乘除
    QString str2;   // 第二个数
    QString res;    // 结果

    int line = 1;   // 标志位
};
#endif

Widget.cpp

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}
/*************** 数字键盘区 ***************/
void Widget::on_pushButton_0_clicked()
{
    if(line == 1)
    {
        str+='0';
        ui->mainLineEdit->setText(str);
    }
    else if(line == 0)
    {
        str2+='0';
        ui->mainLineEdit_2->setText(str2);
    }
}

void Widget::on_pushButton_1_clicked()
{
    if(line == 1)
    {
        str+='1';
        ui->mainLineEdit->setText(str);
    }
    else if(line == 0)
    {
        str2+='1';
        ui->mainLineEdit_2->setText(str2);
    }
}

void Widget::on_pushButton_2_clicked()
{
    if(line == 1)
    {
        str+='2';
        ui->mainLineEdit->setText(str);
    }
    else if(line == 0)
    {
        str2+='2';
        ui->mainLineEdit_2->setText(str2);
    }
}

void Widget::on_pushButton_3_clicked()
{
    if(line == 1)
    {
        str+='3';
        ui->mainLineEdit->setText(str);
    }
    else if(line == 0)
    {
        str2+='3';
        ui->mainLineEdit_2->setText(str2);
    }
}

void Widget::on_pushButton_4_clicked()
{
    if(line == 1)
    {
        str+='4';
        ui->mainLineEdit->setText(str);
    }
    else if(line == 0)
    {
        str2+='4';
        ui->mainLineEdit_2->setText(str2);
    }
}

void Widget::on_pushButton_5_clicked()
{
    if(line == 1)
    {
        str+='5';
        ui->mainLineEdit->setText(str);
    }
    else if(line == 0)
    {
        str2+='5';
        ui->mainLineEdit_2->setText(str2);
    }
}

void Widget::on_pushButton_6_clicked()
{
    if(line == 1)
    {
        str+='6';
        ui->mainLineEdit->setText(str);
    }
    else if(line == 0)
    {
        str2+='6';
        ui->mainLineEdit_2->setText(str2);
    }
}

void Widget::on_pushButton_7_clicked()
{
    if(line == 1)
    {
        str+='7';
        ui->mainLineEdit->setText(str);
    }
    else if(line == 0)
    {
        str2+='7';
        ui->mainLineEdit_2->setText(str2);
    }
}

void Widget::on_pushButton_8_clicked()
{
    if(line == 1)
    {
        str+='8';
        ui->mainLineEdit->setText(str);
    }
    else if(line == 0)
    {
        str2+='8';
        ui->mainLineEdit_2->setText(str2);
    }
}

void Widget::on_pushButton_9_clicked()
{
    if(line == 1)
    {
        str+='9';
        ui->mainLineEdit->setText(str);
    }
    else if(line == 0)
    {
        str2+='9';
        ui->mainLineEdit_2->setText(str2);
    }
}
/*************** 加减乘除区 ***************/
void Widget::on_pushButton_add_clicked()
{
    ch = '+';
    line = 0;
    ui->label->setText("+");
}

void Widget::on_pushButton_sub_clicked()
{
    ch = '-';
    line = 0;
    ui->label->setText("-");
}

void Widget::on_pushButton_mul_clicked()
{
    ch = '*';
    line = 0;
    ui->label->setText("*");
}

void Widget::on_pushButton_div_clicked()
{
    ch = '/';
    line = 0;
    ui->label->setText("/");
}

/*************** 数字键盘区 ***************/
void Widget::on_pushButton_clear_clicked()
{
    if(line == 1)
    {
        str.clear();
        ui->mainLineEdit->setText(str);
    }
    else if(line == 0)
    {
        str2.clear();
        ui->mainLineEdit_2->setText(str2);
    }
    else if(line == 3)
    {
        str.clear();
        str2.clear();
        ui->mainLineEdit->setText("");
        ui->mainLineEdit_2->setText("");
        ui->resEdit->setText("");
        line = 1;
    }
}
/*************** 数字键盘区 ***************/
void Widget::on_pushButton_res_clicked()
{
    //QString 转 int
    int index1 = str.toInt();
    int index2 = str2.toInt();

    //加减乘除
    if(ch == '+')
    {
        int int_res = index1 + index2;
        QString string_res = QString::number(int_res);
        ui->resEdit->setText(string_res);
    }
    else if(ch == '-')
    {
        int int_res = index1 - index2;
        QString string_res = QString::number(int_res);
        ui->resEdit->setText(string_res);
    }
    else if(ch == '*')
    {
        int int_res = index1 * index2;
        QString string_res = QString::number(int_res);
        ui->resEdit->setText(string_res);
    }
    else if(ch == '/')
    {
        int int_res = index1 / index2;
        QString string_res = QString::number(int_res);
        ui->resEdit->setText(string_res);
    }

    //说明计算完毕,再次点击C会清除所有
    line = 3;
}

效果

加减乘除

C键效果