20#include <QApplication>
41 QFontMetrics fm = fontMetrics();
42 QString elided = fm.elidedText(m_originalText, Qt::ElideMiddle, width());
43 QLabel::setText(elided);
46void SqueezeLabelV2::copy()
48 if (selectedText().length() == text().length()) {
49 QApplication::clipboard()->setText(m_originalText);
52 QApplication::clipboard()->setText(selectedText());
58 if (!(textInteractionFlags() & Qt::TextSelectableByMouse) && !(textInteractionFlags() & Qt::TextSelectableByKeyboard)) {
64 QAction* act = menu.addAction(tr(
"Copy"),
this, &SqueezeLabelV2::copy);
65 act->setShortcut(QKeySequence(
QSL(
"Ctrl+C")));
66 act->setEnabled(hasSelectedText());
68 menu.exec(event->globalPos());
73 if (event->key() == Qt::Key_C && event->modifiers() == Qt::ControlModifier) {
80 return m_originalText;
85 QLabel::resizeEvent(event);
86 QFontMetrics fm = fontMetrics();
87 QString elided = fm.elidedText(m_originalText, Qt::ElideMiddle, width());
88 QLabel::setText(elided);
93 if (event->buttons() & Qt::LeftButton) {
94 m_dragStart =
event->position().toPoint();
97 QLabel::mousePressEvent(event);
102 if (!(event->buttons() & Qt::LeftButton) || selectedText().length() != text().length()) {
103 QLabel::mouseMoveEvent(event);
107 int manhattanLength = (
event->position().toPoint() - m_dragStart).manhattanLength();
108 if (manhattanLength <= QApplication::startDragDistance()) {
112 auto* drag =
new QDrag(
this);
113 auto* mime =
new QMimeData;
114 mime->setText(m_originalText);
116 drag->setMimeData(mime);
void resizeEvent(QResizeEvent *event) override
void keyPressEvent(QKeyEvent *event) override
void setText(const QString &txt)
void mouseMoveEvent(QMouseEvent *event) override
void mousePressEvent(QMouseEvent *event) override
SqueezeLabelV2(QWidget *parent=nullptr)
void contextMenuEvent(QContextMenuEvent *event) override