C++ Qt / Label sygnał

Odpowiedz Nowy wątek
Nowy11
2014-09-07 09:29
Nowy11
0

Witam!

Czy jest możliwość aby po kliknięciu w label wykonała się jakaś akcja ? (chodzi mi o to jak zrobić właśnie sygnał kliknięcia w label)

Pozostało 580 znaków

2014-09-07 11:04

Rejestracja: 8 lat temu

Ostatnio: 1 rok temu

2

W samym QLabel nie ma takiej możliwości, ale kto Ci broni stworzyć klasę dziedziczącą po QLabel i reimplementować zdarzenie kliknięcia?

A “clicked” signal may sometimes be required from a label, but there is no “clicked” signal emitted by QLabel.

To make it clickable : Catch the mouse press event on the label. Then emit ‘clicked’ signal.

Example :

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

To make sure other funcionality still works, you also need to call the base class implementation of the event.

http://qt-project.org/doc/qt-4.8/qlabel.html#notes

Pozostało 580 znaków

2014-09-07 13:37

Rejestracja: 16 lat temu

Ostatnio: 3 godziny temu

0

Pytanie do czego ci właściwie potrzebny klikalny label.

WinAPI ma kontrolkę zwaną SysLink, wygląda to tak:
Безымянный.png

Qt też powinno mieć coś takiego, poszukaj.

Qt chyba czegoś takiego nie posiada. Zamiast tego, można wpleść do labela hiperłącze w HTMLu. - Lucas Darkstorm 2014-09-07 15:10

Pozostało 580 znaków

2014-09-08 10:48

Rejestracja: 12 lat temu

Ostatnio: 1 minuta temu

1

Qt jest świetnie udokumentowane (chociaż trafiają się pewne niedociągnięcia).
Z jednej strony dokumentacja mówi

Qt doc napisał(a)

Detailed Description

The QLabel widget provides a text or image display.

QLabel is used for displaying text or an image. No user interaction functionality is provided.

A z drugiej strony masz:

Qt doc napisał(a)

void QLabel::linkActivated(const QString & link) [signal]

This signal is emitted when the user clicks a link. The URL referred to by the anchor is passed in link.

This function was introduced in Qt 4.2.

See also linkHovered().

Czyli zrób tak:

QLabel *label = new QLable(parent);
label->setTextFormat(Qt::RichText);
label->setText("test <url=google.pl>some link</url> now");
connect(label, SIGNAL(linkActivated(QString)), this, SLOT(linkClicked(QString)));

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22, 2014-09-08 10:49
Albo prościej też użyć metody setOpenExternalLinks() - http://qt-project.org/doc/qt-[...]l.html#openExternalLinks-prop - Lucas Darkstorm 2014-09-08 10:53
to zależ od potrzeb. Niekoniecznie link musi być zewnętrzny. - MarekR22 2014-09-08 11:00
To prawda. Zresztą, dlaczego drążymy temat, skoro nie wiadomo, co autor chce dokładnie osiągnąć? - Lucas Darkstorm 2014-09-08 11:31

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0