代码拉取完成,页面将自动刷新
#include "serialportinfo.h"
#include <QDebug>
#include <QQmlEngine>
#include <QQmlComponent>
SerialPortInfo::SerialPortInfo(QObject *parent) :QAbstractListModel(parent)
{
}
void SerialPortInfo::addAll()
{
clear();
QList<QSerialPortInfo> portList=QSerialPortInfo::availablePorts();
for(auto& a:portList){
addSerialPort(a.portName());
}
}
void SerialPortInfo::update()
{
QList<QSerialPortInfo> portList=QSerialPortInfo::availablePorts();
QList<QString> newPortNameList;
for (int i=0;i<portList.size();i++) {
newPortNameList<<portList[i].portName();
}
for (int i=0;i<m_serialPortInfo.size();i++) { //检查已经失效的串口
if(!newPortNameList.contains(m_serialPortInfo[i])){
//删除该串口
beginRemoveRows(QModelIndex(), i, i);
m_serialPortInfo.removeAt(i);
endRemoveRows();
break;
}
}
for (int i=0;i<newPortNameList.size();i++) { //检查新增的串口
if(!m_serialPortInfo.contains(newPortNameList[i])){
//增加该串口
beginInsertRows(QModelIndex(), rowCount(), rowCount());
m_serialPortInfo<<newPortNameList[i];
endInsertRows();
break;
}
}
}
void SerialPortInfo::clear()
{
emit beginResetModel();
m_serialPortInfo.clear();
emit endResetModel();
}
void SerialPortInfo::addSerialPort(const QString &serialPort)
{
beginInsertRows(QModelIndex(), rowCount(), rowCount());
m_serialPortInfo << serialPort;
endInsertRows();
}
int SerialPortInfo::rowCount(const QModelIndex & parent) const {
Q_UNUSED(parent);
return m_serialPortInfo.count();
}
QVariant SerialPortInfo::data(const QModelIndex & index, int role) const {
if (index.row() < 0 || index.row() >= m_serialPortInfo.count())
return QVariant();
const QString &serialPortName = m_serialPortInfo[index.row()];
if (role == portRole)
return serialPortName;
return QVariant();
}
QHash<int, QByteArray> SerialPortInfo::roleNames() const {
QHash<int, QByteArray> roles;
roles[portRole] = "portRole";
return roles;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。