QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
qgspenstylecombobox.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgspenstylecombobox.cpp
3 ---------------------
4 begin : November 2009
5 copyright : (C) 2009 by Martin Dobias
6 email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#include "qgspenstylecombobox.h"
17
18#include "qgsapplication.h"
19#include "qgsguiutils.h"
20
21#include <QList>
22#include <QPair>
23
24#include <QPainter>
25#include <QPen>
26
28 : QComboBox( parent )
29{
30 QList < QPair<Qt::PenStyle, QString> > styles;
31 styles << qMakePair( Qt::SolidLine, tr( "Solid Line" ) )
32 << qMakePair( Qt::NoPen, tr( "No Pen" ) )
33 << qMakePair( Qt::DashLine, tr( "Dash Line" ) )
34 << qMakePair( Qt::DotLine, tr( "Dot Line" ) )
35 << qMakePair( Qt::DashDotLine, tr( "Dash Dot Line" ) )
36 << qMakePair( Qt::DashDotDotLine, tr( "Dash Dot Dot Line" ) );
37
38 const int iconSize = QgsGuiUtils::scaleIconSize( 16 );
39 setIconSize( QSize( iconSize * 2, iconSize ) );
40
41 for ( int i = 0; i < styles.count(); i++ )
42 {
43 const Qt::PenStyle style = styles.at( i ).first;
44 const QString name = styles.at( i ).second;
45 addItem( iconForPen( style ), name, QVariant( ( int ) style ) );
46 }
47}
48
50{
51 return ( Qt::PenStyle ) currentData().toInt();
52}
53
54void QgsPenStyleComboBox::setPenStyle( Qt::PenStyle style )
55{
56 const int idx = findData( QVariant( ( int ) style ) );
57 setCurrentIndex( idx == -1 ? 0 : idx );
58}
59
60QIcon QgsPenStyleComboBox::iconForPen( Qt::PenStyle style )
61{
62 QPixmap pix( iconSize() );
63 QPainter p;
64 pix.fill( Qt::transparent );
65
66 p.begin( &pix );
67 QPen pen( style );
68 pen.setWidth( 2 );
69 p.setPen( pen );
70 const double mid = iconSize().height() / 2.0;
71 p.drawLine( 0, mid, iconSize().width(), mid );
72 p.end();
73
74 return QIcon( pix );
75}
76
77
79// join
80
82 : QComboBox( parent )
83{
84 const QString path = QgsApplication::defaultThemePath();
85 addItem( QIcon( path + "/join_bevel.svg" ), tr( "Bevel" ), QVariant( Qt::BevelJoin ) );
86 addItem( QIcon( path + "/join_miter.svg" ), tr( "Miter" ), QVariant( Qt::MiterJoin ) );
87 addItem( QIcon( path + "/join_round.svg" ), tr( "Round" ), QVariant( Qt::RoundJoin ) );
88}
89
91{
92 return ( Qt::PenJoinStyle ) currentData().toInt();
93}
94
95void QgsPenJoinStyleComboBox::setPenJoinStyle( Qt::PenJoinStyle style )
96{
97 const int idx = findData( QVariant( style ) );
98 setCurrentIndex( idx == -1 ? 0 : idx );
99}
100
101
103// cap
104
106 : QComboBox( parent )
107{
108 const QString path = QgsApplication::defaultThemePath();
109 addItem( QIcon( path + "/cap_square.svg" ), tr( "Square" ), QVariant( Qt::SquareCap ) );
110 addItem( QIcon( path + "/cap_flat.svg" ), tr( "Flat" ), QVariant( Qt::FlatCap ) );
111 addItem( QIcon( path + "/cap_round.svg" ), tr( "Round" ), QVariant( Qt::RoundCap ) );
112}
113
115{
116 return ( Qt::PenCapStyle ) currentData().toInt();
117}
118
119void QgsPenCapStyleComboBox::setPenCapStyle( Qt::PenCapStyle style )
120{
121 const int idx = findData( QVariant( style ) );
122 setCurrentIndex( idx == -1 ? 0 : idx );
123}
static QString defaultThemePath()
Returns the path to the default theme directory.
void setPenCapStyle(Qt::PenCapStyle style)
Qt::PenCapStyle penCapStyle() const
QgsPenCapStyleComboBox(QWidget *parent=nullptr)
Qt::PenJoinStyle penJoinStyle() const
QgsPenJoinStyleComboBox(QWidget *parent=nullptr)
void setPenJoinStyle(Qt::PenJoinStyle style)
void setPenStyle(Qt::PenStyle style)
QIcon iconForPen(Qt::PenStyle style)
Qt::PenStyle penStyle() const
QgsPenStyleComboBox(QWidget *parent=nullptr)
QSize iconSize(bool dockableToolbar)
Returns the user-preferred size of a window's toolbar icons.
int scaleIconSize(int standardSize)
Scales an icon size to compensate for display pixel density, making the icon size hi-dpi friendly,...