21#include <QDialogButtonBox>
25#include "moc_qgsdashspacedialog.cpp"
27using namespace Qt::StringLiterals;
38 for (
int i = 0; i < ( vectorPattern.size() - 1 ); ++i )
40 const double dash = vectorPattern.at( i );
42 const double space = vectorPattern.at( i );
43 total += dash + space;
44 QTreeWidgetItem *entry =
new QTreeWidgetItem();
45 entry->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled );
46 entry->setText( 0, QLocale().toString( dash ) );
47 entry->setText( 1, QLocale().toString( space ) );
48 mDashSpaceTreeWidget->addTopLevelItem( entry );
51 mPatternLengthLabel->setText( QLocale().toString( total,
'f', 6 ) );
53 connect( mAddButton, &QPushButton::clicked,
this, &QgsDashSpaceWidget::mAddButton_clicked );
54 connect( mRemoveButton, &QPushButton::clicked,
this, &QgsDashSpaceWidget::mRemoveButton_clicked );
55 connect( mDashSpaceTreeWidget, &QTreeWidget::itemChanged,
this, [
this] { emit
widgetChanged(); } );
60 for ( qreal part : pattern )
64 mPatternLengthLabel->setText( QLocale().toString( total,
'f', 6 ) );
68void QgsDashSpaceWidget::mAddButton_clicked()
71 QTreeWidgetItem *entry =
new QTreeWidgetItem();
72 entry->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled );
73 entry->setText( 0, u
"5"_s );
74 entry->setText( 1, u
"2"_s );
75 mDashSpaceTreeWidget->addTopLevelItem( entry );
79void QgsDashSpaceWidget::mRemoveButton_clicked()
82 QTreeWidgetItem *currentItem = mDashSpaceTreeWidget->currentItem();
85 mDashSpaceTreeWidget->takeTopLevelItem( mDashSpaceTreeWidget->indexOfTopLevelItem( currentItem ) );
92 QVector<qreal> dashVector;
93 const int nTopLevelItems = mDashSpaceTreeWidget->topLevelItemCount();
94 dashVector.reserve( nTopLevelItems * 2 );
95 for (
int i = 0; i < nTopLevelItems; ++i )
97 QTreeWidgetItem *currentItem = mDashSpaceTreeWidget->topLevelItem( i );
108 QTreeWidgetItem *headerItem = mDashSpaceTreeWidget->headerItem();
114 : QDialog( parent, f )
116 QVBoxLayout *vLayout =
new QVBoxLayout();
118 vLayout->addWidget( mWidget );
119 QDialogButtonBox *bbox =
new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal );
120 connect( bbox, &QDialogButtonBox::accepted,
this, &QgsDashSpaceDialog::accept );
121 connect( bbox, &QDialogButtonBox::rejected,
this, &QgsDashSpaceDialog::reject );
122 vLayout->addWidget( bbox );
123 setLayout( vLayout );
124 setWindowTitle( tr(
"Custom Dash Pattern" ) );
129 return mWidget->dashDotVector();
134 mWidget->setUnit( unit );
RenderUnit
Rendering size units.
static QIcon getThemeIcon(const QString &name, const QColor &fillColor=QColor(), const QColor &strokeColor=QColor())
Helper to get a theme icon.
void setUnit(Qgis::RenderUnit unit)
Sets the unit type used for the dash space pattern (used to update interface labels).
QgsDashSpaceDialog(const QVector< qreal > &v, QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags())
Constructor for QgsDashSpaceDialog.
QVector< qreal > dashDotVector() const
Returns the dash pattern as a list of numbers.
static double toDouble(const QString &input, bool *ok)
Converts input string to double value.
static Q_INVOKABLE QString toAbbreviatedString(Qgis::DistanceUnit unit)
Returns a translated abbreviation representing a distance unit.