重置多文本框

添加多文本控件列表

构造函数中把我们需要操作的控件归类到对应列表之中

    //创建多文本存放数组 - 存放那三列内容 checkBox lineEdi btn

    for(int i=1;i<=9;i++){
        // 添加到按钮数组
        QString btnName = QString("pushButton_t%1").arg(i); //构建对应控件名
        QPushButton * btn = findChild(btnName);//通过控件名查找对应类型对象
        if(btn){
            //设置属性去获得我们的文本框序号
            btn->setProperty("buttonId",i);
            buttons.append(btn);
            //为每一个按钮绑定信号与槽
            connect(btn,SIGNAL(clicked()),this,SLOT(on_command_button_clicked()));
        }

        // 添加lineEdit数组
        QString lineEditName = QString("lineEdit_t%1").arg(i);
        QLineEdit *lineEdit = findChild(lineEditName);
        lineEdits.append(lineEdit); //将找到的控件对象添加到我们定义的控件数组中

        // 添加checkBox数组
        QString checkBoxName = QString("checkBox_t%1").arg(i);
        QCheckBox *checkBox = findChild(checkBoxName);
       checkBoxs.append(checkBox); //将找到的控件对象添加到我们定义的控件数组中
    }

实现重置槽函数:

//重置多文本列表槽函数
void Widget::on_btnInit_clicked()
{
    QMessageBox msgBox;
    msgBox.setWindowTitle("提示");
    msgBox.setIcon(QMessageBox::Question);
    msgBox.setText("重置列表不可逆,确认是否重置?");
    // 设置按钮
    QPushButton *yesButton = msgBox.addButton("是",QMessageBox::YesRole);
    QPushButton *noButton = msgBox.addButton("是",QMessageBox::YesRole);
    //展示QMessageBox
    msgBox.exec();

    if(msgBox.clickedButton() == yesButton){
        qDebug()<<"yes";

        for(int i=0;iclear();
            //遍历checkBox,并取消勾选
            checkBoxs[i]->setChecked(false);
        }

    }

    else if(msgBox.clickedButton() == noButton){
        qDebug()<<"no";
    }
}

效果演示

1.先添加内容,并且勾选HEX发送

从零开始实现自己的串口调试助手(9)-重置多文本框,保存/载入指令集插图

2.点击重置按键,弹出对话框                                              3.选择确定后,多文本框被清空

从零开始实现自己的串口调试助手(9)-重置多文本框,保存/载入指令集插图(1)                               从零开始实现自己的串口调试助手(9)-重置多文本框,保存/载入指令集插图(2)

保存指令集

实现保存槽函数:

void Widget::on_btnSave_clicked()
{
    QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
                               "F:/myqt/file_of_qt/cmds.txt",
                               tr("Text (*.txt)"));


    QFile file(fileName); // 通过什么获得的文件名来实例化Qfile对象
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
        return;

    QTextStream out(&file); //实例化QTextStream对象 -- 准备写入数据
    for(int i=0;i<lineEdits.size();++i){ // 遍历指令集对应的控件列表
    out<isChecked()<<","<text()<<"
";
    }
     file.close();
}

实现效果

在指令集存在数据的情况下,点击保存按钮

弹出保存文件框

从零开始实现自己的串口调试助手(9)-重置多文本框,保存/载入指令集插图(3)

点击保存,去对应路径下打开

从零开始实现自己的串口调试助手(9)-重置多文本框,保存/载入指令集插图(4)

载入指令集

实现载入槽函数

void Widget::on_btnLoad_clicked()
{
    int i = 0;
    QString fileName = QFileDialog::getOpenFileName(this, tr("载入文件"),
                                                    "F:/myqt/file_of_qt/",
                                                    tr("文本类型 (*.txt)"));
    if(fileName != NULL){ // if这个文件名的文件存在
        QFile file(fileName);
        if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
            return;

        QTextStream in(&file); //实例化QTextStream对象 -- 准备写入数据

        while(!in.atEnd() && i结束循环
            QString line = in.readLine(); //读取一行内容到line中
            QStringList parts = line.split(','); //以','分割字符串为若干部分,并存入QStringLine中
            if(parts.count() == 2){ // 得到合法的指令
                checkBoxs[i]->setChecked(parts[0].toInt());
                lineEdits[i]->setText(parts[1]);
            }
            i++;
        }

    }

}

效果演示

先看看我们的指令集

从零开始实现自己的串口调试助手(9)-重置多文本框,保存/载入指令集插图(5)

选择载入

从零开始实现自己的串口调试助手(9)-重置多文本框,保存/载入指令集插图(6)

选择我们的目标指令集 –>载入成功

从零开始实现自己的串口调试助手(9)-重置多文本框,保存/载入指令集插图(7)

本站无任何商业行为
个人在线分享 » 从零开始实现自己的串口调试助手(9)-重置多文本框,保存/载入指令集
E-->