DolphinQt2: add QtUtils/ElidedButton

This commit is contained in:
Michael Maltese
2017-05-30 23:08:14 -07:00
parent 6dc3b2e8bc
commit 07c90bed08
5 changed files with 70 additions and 2 deletions

View File

@ -0,0 +1,40 @@
// Copyright 2017 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#include "DolphinQt2/QtUtils/ElidedButton.h"
#include <QFontMetrics>
#include <QStyleOptionButton>
#include <QStylePainter>
ElidedButton::ElidedButton(const QString& text, Qt::TextElideMode elide_mode)
: QPushButton(text, nullptr), m_elide_mode{elide_mode}
{
}
Qt::TextElideMode ElidedButton::elideMode() const
{
return m_elide_mode;
}
void ElidedButton::setElideMode(Qt::TextElideMode elide_mode)
{
if (elide_mode == m_elide_mode)
return;
m_elide_mode = elide_mode;
repaint();
}
void ElidedButton::paintEvent(QPaintEvent* event)
{
QStyleOptionButton option;
initStyleOption(&option);
option.text = fontMetrics().elidedText(
text(), m_elide_mode,
style()->subElementRect(QStyle::SE_PushButtonContents, &option, this).width());
QStylePainter{this}.drawControl(QStyle::CE_PushButton, option);
}

View File

@ -0,0 +1,20 @@
// Copyright 2017 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#pragma once
#include <QPushButton>
class ElidedButton : public QPushButton
{
public:
ElidedButton(const QString& text = QStringLiteral(""),
Qt::TextElideMode elide_mode = Qt::ElideRight);
Qt::TextElideMode elideMode() const;
void setElideMode(Qt::TextElideMode elide_mode);
private:
void paintEvent(QPaintEvent* event);
Qt::TextElideMode m_elide_mode;
};