重置多文本框
添加多文本控件列表
在构造函数中把我们需要操作的控件归类到对应列表之中
//创建多文本存放数组 - 存放那三列内容 checkBox lineEdi btn
for(int i=1;i<=9;i++){
// 添加到按钮数组
QString btnName = QString("pushButton_t%1").arg(i); //构建对应控件名
QPushButton * btn = findChild<QPushButton *>(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<QLineEdit*>(lineEditName);
lineEdits.append(lineEdit); //将找到的控件对象添加到我们定义的控件数组中
// 添加checkBox数组
QString checkBoxName = QString("checkBox_t%1").arg(i);
QCheckBox *checkBox = findChild<QCheckBox*>(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;i<lineEdits.size();++i){
//遍历lineEdit 并清空内容
lineEdits[i]->clear();
//遍历checkBox,并取消勾选
checkBoxs[i]->setChecked(false);
}
}
else if(msgBox.clickedButton() == noButton){
qDebug()<<"no";
}
}
效果演示
1.先添加内容,并且勾选HEX发送
2.点击重置按键,弹出对话框 3.选择确定后,多文本框被清空
保存指令集
实现保存槽函数:
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<<checkBoxs[i]->isChecked()<<","<<lineEdits[i]->text()<<"\n";
}
file.close();
}
实现效果
在指令集存在数据的情况下,点击保存按钮
弹出保存文件框
点击保存,去对应路径下打开
载入指令集
实现载入槽函数
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<=9){//读到文末放回1,!1=0 -->结束循环
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++;
}
}
}
效果演示
先看看我们的指令集
选择载入
选择我们的目标指令集 -->载入成功