20#include <QApplication>
21#include <QResizeEvent>
46 if (it.value() == _text) {
75 Q_FOREACH (
const QString &item, texts) {
83 QFontMetrics fm = fontMetrics();
84 int maxW = count() ? 18 : 7 * fm.boundingRect(QChar(
'x')).width() + 18;
85 int maxH = qMax(fm.lineSpacing(), 14) + 2;
87 QStyleOptionComboBox options;
88 options.initFrom(
this);
90 return style()->sizeFromContents(QStyle::CT_ComboBox, &options, QSize(maxW, maxH),
this);
96 QComboBox::insertItem(index,
squeezeText(newItem,
this), userData);
97 setItemData(index, newItem, Qt::ToolTipRole);
103 QComboBox::insertItem(index, icon,
squeezeText(newItem,
this), userData);
104 setItemData(index, newItem, Qt::ToolTipRole);
120 if (itemIndex >= 0) {
121 setCurrentIndex(itemIndex);
134 setItemText(it.key(),
squeezeText(it.value(),
this));
141 int widgetSize = widget->width() - 30;
142 QFontMetrics fm(widget->fontMetrics());
145 if (fm.boundingRect(original).width() < widgetSize)
149 QString sqItem = original;
150 widgetSize = widgetSize - fm.boundingRect(
"...").width();
151 for (
int i = 0 ; i != original.length(); ++i) {
152 if ((
int)fm.boundingRect(original.right(i)).width() > widgetSize) {
153 sqItem = QString(
"..." + original.right(--i));
162 int curItem = currentIndex();
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
QString currentUnsqueezedText()
bool contains(const QString &text) const
~KisSqueezedComboBox() override
QMap< int, QString > m_originalItems
void removeSqueezedItem(int index)
QStringList originalTexts() const
void resizeEvent(QResizeEvent *) override
void setCurrent(const QString &itemText)
void addSqueezedItem(const QString &newItem, QVariant userData=QVariant())
QSize sizeHint() const override
static QString squeezeText(const QString &original, const QWidget *widget)
KisSqueezedComboBox(QWidget *parent=0, const char *name=0)
qint32 findOriginalText(const QString &text) const
void resetOriginalTexts(const QStringList &texts)
void insertSqueezedItem(const QString &newItem, int index, QVariant userData=QVariant())