Implemented precalulation of sizeHint

For the following classes:
* ComboBoxDelegate
* DateEditDelegate
* TimeEditDelegate
* SpinBoxEditDelegate
This commit is contained in:
Joachim Kohlhammer
2024-11-03 19:59:39 +01:00
committed by Alejandro Martinez
parent ef3b8acfb4
commit eaa86779e5
2 changed files with 67 additions and 6 deletions

View File

@@ -82,6 +82,7 @@ ComboBoxDelegate::ComboBoxDelegate
(QObject *parent)
: QStyledItemDelegate(parent)
{
fillSizeHint();
}
@@ -90,6 +91,7 @@ ComboBoxDelegate::addItems
(const QStringList &texts)
{
this->texts = texts;
fillSizeHint();
}
@@ -162,9 +164,17 @@ ComboBoxDelegate::sizeHint
Q_UNUSED(option)
Q_UNUSED(index)
return _sizeHint;
}
void
ComboBoxDelegate::fillSizeHint
()
{
QComboBox widget;
widget.addItems(texts);
return widget.sizeHint();
_sizeHint = widget.sizeHint();
}
@@ -370,14 +380,16 @@ SpinBoxEditDelegate::SpinBoxEditDelegate
(QObject *parent)
: QStyledItemDelegate(parent)
{
fillSizeHint();
}
void
SpinBoxEditDelegate::setMininum
SpinBoxEditDelegate::setMinimum
(int minimum)
{
this->minimum = minimum;
fillSizeHint();
}
@@ -386,6 +398,7 @@ SpinBoxEditDelegate::setMaximum
(int maximum)
{
this->maximum = maximum;
fillSizeHint();
}
@@ -395,6 +408,7 @@ SpinBoxEditDelegate::setRange
{
this->minimum = minimum;
this->maximum = maximum;
fillSizeHint();
}
@@ -411,6 +425,7 @@ SpinBoxEditDelegate::setSuffix
(const QString &suffix)
{
this->suffix = suffix;
fillSizeHint();
}
@@ -419,6 +434,7 @@ SpinBoxEditDelegate::setShowSuffixOnEdit
(bool show)
{
showSuffixOnEdit = show;
fillSizeHint();
}
@@ -427,6 +443,7 @@ SpinBoxEditDelegate::setShowSuffixOnDisplay
(bool show)
{
showSuffixOnDisplay = show;
fillSizeHint();
}
@@ -494,13 +511,21 @@ SpinBoxEditDelegate::sizeHint
Q_UNUSED(option)
Q_UNUSED(index)
return _sizeHint;
}
void
SpinBoxEditDelegate::fillSizeHint
()
{
QSpinBox widget;
if ((showSuffixOnEdit || showSuffixOnDisplay) && ! suffix.isEmpty()) {
widget.setSuffix(" " + suffix);
}
widget.setMaximum(maximum);
widget.setValue(maximum);
return widget.sizeHint();
_sizeHint = widget.sizeHint();
}
@@ -676,6 +701,7 @@ DateEditDelegate::DateEditDelegate
(QObject *parent)
: QStyledItemDelegate(parent)
{
fillSizeHint();
}
@@ -684,6 +710,7 @@ DateEditDelegate::setCalendarPopup
(bool enable)
{
calendarPopup = enable;
fillSizeHint();
}
@@ -738,8 +765,17 @@ DateEditDelegate::sizeHint
Q_UNUSED(option)
Q_UNUSED(index)
return _sizeHint;
}
void
DateEditDelegate::fillSizeHint
()
{
QDateEdit widget;
return widget.sizeHint();
widget.setCalendarPopup(calendarPopup);
_sizeHint = widget.sizeHint();
}
@@ -749,6 +785,7 @@ TimeEditDelegate::TimeEditDelegate
(QObject *parent)
: QStyledItemDelegate(parent)
{
fillSizeHint();
}
@@ -757,6 +794,7 @@ TimeEditDelegate::setFormat
(const QString &format)
{
this->format = format;
fillSizeHint();
}
@@ -765,6 +803,7 @@ TimeEditDelegate::setSuffix
(const QString &suffix)
{
this->suffix = suffix;
fillSizeHint();
}
@@ -773,6 +812,7 @@ TimeEditDelegate::setShowSuffixOnEdit
(bool show)
{
showSuffixOnEdit = show;
fillSizeHint();
}
@@ -781,6 +821,7 @@ TimeEditDelegate::setShowSuffixOnDisplay
(bool show)
{
showSuffixOnDisplay = show;
fillSizeHint();
}
@@ -866,6 +907,14 @@ TimeEditDelegate::sizeHint
Q_UNUSED(option)
Q_UNUSED(index)
return _sizeHint;
}
void
TimeEditDelegate::fillSizeHint
()
{
QTimeEdit widget;
widget.setTime(QTime(0, 0, 0));
QString f = format;
@@ -876,5 +925,5 @@ TimeEditDelegate::sizeHint
f += " '" + suffix + "'";
}
widget.setDisplayFormat(f);
return widget.sizeHint();
_sizeHint = widget.sizeHint();
}

View File

@@ -68,6 +68,9 @@ private slots:
private:
QStringList texts;
QSize _sizeHint;
void fillSizeHint();
};
@@ -128,7 +131,7 @@ class SpinBoxEditDelegate: public QStyledItemDelegate
public:
SpinBoxEditDelegate(QObject *parent = nullptr);
void setMininum(int minimum);
void setMinimum(int minimum);
void setMaximum(int maximum);
void setRange(int minimum, int maximum);
void setSingleStep(int val);
@@ -149,6 +152,9 @@ private:
QString suffix;
bool showSuffixOnEdit = true;
bool showSuffixOnDisplay = true;
QSize _sizeHint;
void fillSizeHint();
};
@@ -203,6 +209,9 @@ public:
private:
bool calendarPopup = false;
QSize _sizeHint;
void fillSizeHint();
};
@@ -231,6 +240,9 @@ private:
bool showSuffixOnDisplay = true;
QTime min;
QTime max;
QSize _sizeHint;
void fillSizeHint();
};
#endif