diff options
Diffstat (limited to 'ui/qt/models/percent_bar_delegate.h')
-rw-r--r-- | ui/qt/models/percent_bar_delegate.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/ui/qt/models/percent_bar_delegate.h b/ui/qt/models/percent_bar_delegate.h new file mode 100644 index 00000000..4f0d53df --- /dev/null +++ b/ui/qt/models/percent_bar_delegate.h @@ -0,0 +1,52 @@ +/** @file + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef PERCENTBARDELEGATE_H +#define PERCENTBARDELEGATE_H + +/* + * @file Percent bar delegate. + * + * QStyledItemDelegate subclass that will draw a percentage value and a + * single-item bar chart for the specified value. + * + * This is intended to be used in QTreeWidgets to show percentage values. + * To use it, first call setItemDelegate: + * + * myTreeWidget()->setItemDelegateForColumn(col_pct_, new PercentBarDelegate()); + * + * Then, for each QTreeWidgetItem, set a double value using setData: + * + * setData(col_pct_, Qt::UserRole, QVariant::fromValue<double>(packets_ * 100.0 / num_packets)); + * + * If the item data cannot be converted to a valid double value or if its + * text string is non-empty then it will be rendered normally (i.e. the + * percent text and bar will not be drawn). This lets you mix normal and + * percent bar rendering between rows. + */ + +#include <QStyledItemDelegate> + +class PercentBarDelegate : public QStyledItemDelegate +{ +public: + PercentBarDelegate(QWidget *parent = 0) : QStyledItemDelegate(parent) { } + + // Make sure QStyledItemDelegate::paint doesn't draw any text. + virtual QString displayText(const QVariant &, const QLocale &) const { return QString(); } + +protected: + void paint(QPainter *painter, const QStyleOptionViewItem &option, + const QModelIndex &index) const; + QSize sizeHint(const QStyleOptionViewItem &option, + const QModelIndex &index) const; + +}; + +#endif // PERCENTBARDELEGATE_H |