C++ Qt

0

Heyka!

Mam problem bo chce po naciśnięciu przycisku aby w label pojawił się tekst ...
Chce zrobić to bez Desing bo w nim to wiem jak zrobić... :D
Próbowałem to tak(ale nie działa, męczę się z tym już z 2 godziny w google szukałem i są niby jakieś rozwiązania ale mam wrażenia że do starszych wersji(pewnie jakieś różnice w składni))

QObject::connect(button,SIGNAL(clicked()),timer,SLOT(setText("Text ... (wiem że tu jest problem ale nie wiem jak go rozwiązać)"));

Proszę o pomoc :/

0

Ten "timer" to oczywiście label.

0

obejrzyj to

0

Oglądałem 3 razy i nic nie wymyśliłem :/

0

Rozwiązania są dwa.
Prostsze, to włączyć C++11 i użyć wyrażeń lambda:

QObject::connect(button, &QAbstractButton::clicked,
                                 [&]() { label->setText("Text"); })

Drugie nie wymaga C++11 trzeba użyć QSignalMapper, patrz dokumentacja.

0

Drugie nie wymaga C++11 trzeba użyć QSignalMapper, patrz dokumentacja.
Wystarczy osobna metoda zamiast lambdy.

class MainWindow : public QMainWindow
{
...
private slots:
    void on_timer_clicked();

// ------------------------------------------

void MainWindow::on_timer_clicked()
{
    timer->setText("Text ... (wiem że tu jest problem ale nie wiem jak go rozwiązać)");
}

// ------------------------------------------

 connect(button, SIGNAL(clicked()), this, SLOT(on_timer_clicked()));

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