最近做了一个QT上位机,用来给下位机做升级,主要功能如下:首先进行设备搜索,为搜索到的每一个设备创建一个checkbox,并将其放入listWidget中进行展示,之后就可以勾选一个或多个设备进行升级了。
功能很简单,主要讲下控件下包含子控件的添加及获取。
一、首先看下添加,需要两个槽函数。
1、对查找到的设备信息进行保存,方便后续的使用
typedef struct FIND_DEVICE_INFO{
QString devname;
QString addr;
quint16 Port;
QString sn;
QString version;
}deviceInfo;
QVector<deviceInfo> mDevice;
void MainWindow::findDEV_slot(QString devname, QString addr, QString port,QString version){
deviceInfo info;
info.addr = addr;
info.devname = devname;
info.Port = port.toUShort();
info.version = version;
mDevice.push_back(info);
}
2、搜索到的设备进行展示
void MainWindow::findNewDev_slot(QString devname, QString addr, QString port, QString version){
QString list;
int i;
QString DEV="设备名称:" + devname;
QString IP="IP地址:" + addr;
QString VER="版本号:" + version;
QList<QCheckBox*> checkboxList = ui->listWidget_dev_list->findChildren<QCheckBox*>(); //获取所有的QCheckBox
for(i=0;i<checkboxList.count();i++)
{
if(checkboxList[i]->text().contains(addr))//如果IP地址重复,返回
return;
}
list = DEV + "\n" + IP + "\n" + "\n"+ VER;
QListWidgetItem *item = new QListWidgetItem(this->ui->listWidget_dev_list);
item->setSizeHint(QSize(200, 80));//设置尺寸
QCheckBox *box = new QCheckBox(list, this->ui->listWidget_dev_list);
//box->setChecked(true);
this->ui->listWidget_dev_list->setItemWidget(item, (QWidget *)box);
}
二、得到所有的下位机设备后,就可以勾选相应的设备进行升级了。代码如下。
QVector<deviceInfo> updateDevice;
void MainWindow::recv_errMsg(QString msg){
QMessageBox::information(this,"提示",msg);
}
void MainWindow::on_pushButton_update_clicked()
{
ui->pushButton_update->setDisabled(true);
QList<QCheckBox*> checkboxList = ui->listWidget_dev_list->findChildren<QCheckBox*>(); //获取所有的QCheckBox
QByteArray checked_array = 0;
int i = 0;
foreach(QCheckBox *checkbox, checkboxList)
{
if(checkbox->isChecked())//得到勾选的设备
{
updateDevice.push_back(mDevice[i]);
}
i++;
}
if(updateDevice.size() == 0){
recv_errMsg("请选则要升级的设备");
ui->pushButton_update->setEnabled(true);
return;
}
if(this->ui->lineEdit_update_file->text()== "" ){
recv_errMsg("请选择升级文件");
ui->pushButton_update->setEnabled(true);
return;
}
//后面就是升级的具体实现了...
}
如果觉得这篇文章对您有帮助,欢迎点赞、评论、转发、收藏!您的支持是我创作的最大动力!