diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-10-06 09:32:30 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-10-12 09:18:27 +0200 |
commit | 101295aef757747490fb5533710d9e10bf303d19 (patch) | |
tree | 40ab35657d9ad47a6a77a4b125eab889212280c5 /examples/serialbus/modbus/client/writeregistermodel.cpp | |
parent | 11a33d1140acf42fdca01f42c0c4ed01e2c5ee07 (diff) |
Polish the modbus client example
- Use modern string literals
- Use QCommandLineParser to switch on verbose mode
- Fix translated texts with arguments
- Streamline some code
- Remove unused member variable
- Use QVariant casts
Pick-to: 6.4
Change-Id: Ie3bdaa82856bfe8df020dc289de9177d098f02d3
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
Diffstat (limited to 'examples/serialbus/modbus/client/writeregistermodel.cpp')
-rw-r--r-- | examples/serialbus/modbus/client/writeregistermodel.cpp | 62 |
1 files changed, 35 insertions, 27 deletions
diff --git a/examples/serialbus/modbus/client/writeregistermodel.cpp b/examples/serialbus/modbus/client/writeregistermodel.cpp index 6cc62a5..de6ffbd 100644 --- a/examples/serialbus/modbus/client/writeregistermodel.cpp +++ b/examples/serialbus/modbus/client/writeregistermodel.cpp @@ -3,6 +3,8 @@ #include "writeregistermodel.h" +using namespace Qt::StringLiterals; + enum { NumColumn = 0, CoilsColumn = 1, HoldingColumn = 2, ColumnCount = 3, RowCount = 10 }; WriteRegisterModel::WriteRegisterModel(QObject *parent) @@ -11,77 +13,81 @@ WriteRegisterModel::WriteRegisterModel(QObject *parent) { } -int WriteRegisterModel::rowCount(const QModelIndex &/*parent*/) const +int WriteRegisterModel::rowCount(const QModelIndex & /* parent */) const { return RowCount; } -int WriteRegisterModel::columnCount(const QModelIndex &/*parent*/) const +int WriteRegisterModel::columnCount(const QModelIndex & /* parent */) const { return ColumnCount; } QVariant WriteRegisterModel::data(const QModelIndex &index, int role) const { - if (!index.isValid() || index.row() >= RowCount || index.column() >= ColumnCount) - return QVariant(); + const int row = index.row(); + const int column = index.column(); + if (!index.isValid() || row >= RowCount || column >= ColumnCount) + return {}; Q_ASSERT(m_coils.count() == RowCount); Q_ASSERT(m_holdingRegisters.count() == RowCount); - if (index.column() == NumColumn && role == Qt::DisplayRole) - return QString::number(index.row()); + if (column == NumColumn && role == Qt::DisplayRole) + return QString::number(row); - if (index.column() == CoilsColumn && role == Qt::CheckStateRole) // coils - return m_coils.at(index.row()) ? Qt::Checked : Qt::Unchecked; + if (column == CoilsColumn && role == Qt::CheckStateRole) // coils + return m_coils.at(row) ? Qt::Checked : Qt::Unchecked; - if (index.column() == HoldingColumn && role == Qt::DisplayRole) // holding registers - return QString("0x%1").arg(QString::number(m_holdingRegisters.at(index.row()), 16)); + if (column == HoldingColumn && role == Qt::DisplayRole) // holding registers + return QString("0x%1").arg(QString::number(m_holdingRegisters.at(row), 16)); - return QVariant(); + return {}; } QVariant WriteRegisterModel::headerData(int section, Qt::Orientation orientation, int role) const { if (role != Qt::DisplayRole) - return QVariant(); + return {}; if (orientation == Qt::Horizontal) { switch (section) { case NumColumn: - return QStringLiteral("#"); + return u"#"_s; case CoilsColumn: - return QStringLiteral("Coils "); + return u"Coils "_s; case HoldingColumn: - return QStringLiteral("Holding Registers"); + return u"Holding Registers"_s; default: break; } } - return QVariant(); + return {}; } bool WriteRegisterModel::setData(const QModelIndex &index, const QVariant &value, int role) { - if (!index.isValid() || index.row() >= RowCount || index.column() >= ColumnCount) + const int row = index.row(); + const int column = index.column(); + if (!index.isValid() || row >= RowCount || column >= ColumnCount) return false; Q_ASSERT(m_coils.count() == RowCount); Q_ASSERT(m_holdingRegisters.count() == RowCount); - if (index.column() == CoilsColumn && role == Qt::CheckStateRole) { // coils + if (column == CoilsColumn && role == Qt::CheckStateRole) { // coils auto s = static_cast<Qt::CheckState>(value.toUInt()); - s == Qt::Checked ? m_coils.setBit(index.row()) : m_coils.clearBit(index.row()); + s == Qt::Checked ? m_coils.setBit(row) : m_coils.clearBit(row); emit dataChanged(index, index); return true; } - if (index.column() == HoldingColumn && role == Qt::EditRole) { // holding registers + if (column == HoldingColumn && role == Qt::EditRole) { // holding registers bool result = false; quint16 newValue = value.toString().toUShort(&result, 16); if (result) - m_holdingRegisters[index.row()] = newValue; + m_holdingRegisters[row] = newValue; emit dataChanged(index, index); return result; @@ -92,16 +98,18 @@ bool WriteRegisterModel::setData(const QModelIndex &index, const QVariant &value Qt::ItemFlags WriteRegisterModel::flags(const QModelIndex &index) const { - if (!index.isValid() || index.row() >= RowCount || index.column() >= ColumnCount) - return QAbstractTableModel::flags(index); - + const int row = index.row(); + const int column = index.column(); Qt::ItemFlags flags = QAbstractTableModel::flags(index); - if ((index.row() < m_address) || (index.row() >= (m_address + m_number))) + if (!index.isValid() || row >= RowCount || column >= ColumnCount) + return flags; + + if ((row < m_address) || (row >= (m_address + m_number))) flags &= ~Qt::ItemIsEnabled; - if (index.column() == CoilsColumn) // coils + if (column == CoilsColumn) // coils return flags | Qt::ItemIsUserCheckable; - if (index.column() == HoldingColumn) // holding registers + if (column == HoldingColumn) // holding registers return flags | Qt::ItemIsEditable; return flags; |