Tue, 28 Jun 2022 14:20:08 +0300
Add scroll bars to the mdi area
#include <QColor> #include "src/messagelog.h" MessageLog::MessageLog(QObject *parent) : QAbstractTableModel{parent} { } void MessageLog::addMessage(const Message& message) { const int row = static_cast<int>(this->messages.size()); this->beginInsertRows({}, row, row); this->messages.push_back(message); this->endInsertRows(); } QVariant MessageLog::headerData(int section, Qt::Orientation orientation, int role) const { if (orientation != Qt::Horizontal or role != Qt::DisplayRole) { return {}; } else { switch (static_cast<Column>(section)) { case TimeColumn: return tr("Time"); case MessageColumn: return tr("Message"); } return {}; } } int MessageLog::rowCount(const QModelIndex&) const { return narrow<int>(signed_cast(this->messages.size())); } int MessageLog::columnCount(const QModelIndex&) const { return NUM_COLUMNS; } QVariant MessageLog::data(const QModelIndex& index, int role) const { const std::size_t row = unsigned_cast(index.row()); if (false or row >= this->messages.size() or index.column() < 0 or index.column() >= NUM_COLUMNS ) { return {}; } else { const Message& message = this->messages[row]; switch (role) { case Qt::DisplayRole: switch (static_cast<Column>(index.column())) { case TimeColumn: return message.time.toString(tr("hh:mm:ss")); case MessageColumn: return message.text; } break; case Qt::BackgroundRole: switch(message.type) { case Message::Info: return {}; case Message::Warning: return QColor{Qt::yellow}; case Message::Error: return QColor{Qt::red}; } break; } return {}; } }