Jump to content

Clickable QLabel/ru

From Qt Wiki
Revision as of 10:15, 1 March 2016 by Alexey Serebryakov (talk | contribs) (Created Russian version)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

Иногда может потребоваться использовать сигнал "clicked" от виджета QLabel, когда пользователь щелкает мышью на виджете, но у этого виджета отсутствует данный сигнал. В качестве заменителя можно использовать виджет QPushButton установив свойство 'flat', но тогда не будут доступны другие свойства QLabel. Далее прилагается код подкласса QLabel, который имеет сигнал "clicked".

Заголовочный файл

class ClickableLabel : public QLabel
{
Q_OBJECT
public:
    explicit ClickableLabel( const QString& text="", QWidget* parent=0 );
    ~ClickableLabel();
signals:
    void clicked();
protected:
    void mousePressEvent(QMouseEvent* event);
};

Исходный файл

ClickableLabel::ClickableLabel(const QString& text, QWidget* parent)
    : QLabel(parent)
{
    setText(text);
}

ClickableLabel::~ClickableLabel()
{
}

void ClickableLabel::mousePressEvent(QMouseEvent* event)
{
    emit clicked();
}

Пояснение: Обрабатывается событие при нажатии кнопки мыши на виджет, затем посылается сигнал 'clicked'. Также можно посылать сигнал при отпускании кнопки мыши, но это уже на усмотрение разработчика.