QSize QBouton::sizeHint() const { // Used for normal buttons if (!m_smartSizeHint || (!m_resizeInsteadOfCropping && m_border == 0)) return QPushButton::sizeHint(); QSize current = size(); return getIconSize(current.width(), current.height(), true); }
void ActionGridBar::addAction(QAction* action, int row, int col, int row_span, int col_span, bool at_end) { // Determine icon size (important for high-dpi screens). // Use a somewhat smaller size than what would cover the whole icon to // account for the (assumed) button border. QSize icon_size = getIconSize(row_span, col_span); // Ensure that the icon of the given action is big enough. If not, scale it up. // NOTE: Here, row_span == col_span is assumed. QIcon icon = action->icon(); QPixmap pixmap = icon.pixmap(icon_size, QIcon::Normal, QIcon::Off); if (! pixmap.isNull() && pixmap.width() < icon_size.width()) { pixmap = pixmap.scaled(icon_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); icon.addPixmap(pixmap); action->setIcon(icon); } // Add the item GridItem newItem; newItem.id = next_id ++; newItem.action = action; newItem.button = new QToolButton(); newItem.button->setDefaultAction(action); newItem.button->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); newItem.button->setAutoRaise(true); newItem.button->setIconSize(icon_size); newItem.button_hidden = false; newItem.row = row; newItem.col = col; newItem.row_span = row_span; newItem.col_span = col_span; newItem.at_end = at_end; items.push_back(newItem); // If this is the overflow action, remember the button. if (action == overflow_action) overflow_button = newItem.button; }
void SymbolLayer::setIconSize(PropertyValue<float> value) { if (value == getIconSize()) return; impl->layout.iconSize.set(value); impl->observer->onLayerLayoutPropertyChanged(*this, "icon-size"); }
int FilmstripFrames::index2y(int index) const { const int dy = getIconSize().height() + fs_frameSpacing + fs_iconMarginTop + fs_iconMarginBottom; return index * dy; }
int FilmstripFrames::y2index(int y) const { const int dy = getIconSize().height() + fs_frameSpacing + fs_iconMarginTop + fs_iconMarginBottom; return y / dy; }
void QBouton::paintEvent(QPaintEvent *event) { // Used for normal buttons if (!m_resizeInsteadOfCropping && m_border == 0 && m_progressMax == 0) { QPushButton::paintEvent(event); return; } QPainter painter(this); QRect region = m_smartSizeHint ? contentsRect() : event->rect(); QSize iconSize = getIconSize(region.width(), region.height()); int p = m_border; int x = region.x(); int y = region.y(); int w = iconSize.width() + 2*p; int h = iconSize.height() + 2*p; // Ignore invalid images if (w == 0 || h == 0) return; // Center the image bool center = true; if (center) { x += (region.width() - w) / 2; y += (region.height() - h) / 2; } // Draw image QIcon::Mode mode = this->isChecked() ? QIcon::Selected : QIcon::Normal; if (w > h) { icon().paint(&painter, x+p, y+p, w-2*p, w-2*p, Qt::AlignLeft | Qt::AlignTop, mode); h = h-((h*2*p)/w)+2*p-1; } else { icon().paint(&painter, x+p, y+p, h-2*p, h-2*p, Qt::AlignLeft | Qt::AlignTop, mode); w = w-((w*2*p)/h)+2*p-1; } // Clip borders overflows painter.setClipRect(x, y, w, h); // Draw progress if (m_progressMax > 0 && m_progress > 0 && m_progress != m_progressMax) { int lineHeight = 6; int a = p + lineHeight/2; float ratio = (float)m_progress / m_progressMax; QPoint p1(qMax(x, 0) + a, qMax(y, 0) + a); QPoint p2(p1.x() + (iconSize.width() - a) * ratio, p1.y()); if (p2.x() > p1.x()) { QPen pen(QColor(0, 200, 0)); pen.setWidth(lineHeight); painter.setPen(pen); painter.drawLine(p1, p2); } } // Draw borders if (p > 0 && m_penColor.isValid()) { QPen pen(m_penColor); pen.setWidth(p*2); painter.setPen(pen); painter.drawRect(qMax(x,0), qMax(y,0), qMin(w,size().width()), qMin(h,size().height())); } }