1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-10-07 07:13:21 +02:00
GPXSee/src/GUI/stylecombobox.cpp

45 lines
1020 B
C++
Raw Normal View History

2016-12-06 01:48:26 +01:00
#include <QPen>
#include <QPainter>
#include <QResizeEvent>
#include "stylecombobox.h"
2016-12-06 21:01:06 +01:00
2016-12-07 21:38:36 +01:00
#define MIN_LINE_LENGTH 60
2016-12-06 21:01:06 +01:00
#define LINE_WIDTH_RATIO 7
2016-12-06 01:48:26 +01:00
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*a))
StyleComboBox::StyleComboBox(QWidget *parent) : QComboBox(parent)
{
Qt::PenStyle styles[] = {Qt::SolidLine, Qt::DashLine, Qt::DotLine,
Qt::DashDotLine, Qt::DashDotDotLine};
QSize is = iconSize();
2016-12-06 21:01:06 +01:00
setIconSize(QSize(MIN_LINE_LENGTH, is.height()));
2016-12-06 01:48:26 +01:00
is = iconSize();
for (size_t i = 0; i < ARRAY_SIZE(styles); i++) {
QPixmap pm(is);
pm.fill(Qt::transparent);
QBrush brush(Qt::black);
2016-12-06 21:01:06 +01:00
QPen pen(brush, is.height() / LINE_WIDTH_RATIO, styles[i]);
2016-12-06 01:48:26 +01:00
QPainter painter(&pm);
painter.setPen(pen);
painter.drawLine(0, is.height() / 2, is.width(), is.height() / 2);
addItem(QIcon(pm), QString(), QVariant((int)styles[i]));
}
}
void StyleComboBox::setValue(Qt::PenStyle value)
{
for (int i = 0; i < count(); i++) {
if ((Qt::PenStyle) itemData(i).toInt() == value) {
setCurrentIndex(i);
return;
}
}
}