Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[QT] pobieranie tekstu i parametry

Ostatnio zmodyfikowano 2017-11-01 12:57
Autor Wiadomość
Szybki_Jakub
Temat założony przez niniejszego użytkownika
[QT] pobieranie tekstu i parametry
» 2017-10-31 20:30:20
Witam wszystkich. Poszukuje rozwiązania następującego problemu, mianowicie w moim programie potrzebuję pobierać tekst z wielu różnych elementów okienka niestety jedyne rozwiązanie jakie znam to pisanie osobnej funkcji do każdego jednego elementu jak w kodzie poniżej:
C/C++
QString Window::get_label()
{
    return ui->label->text();
}
QString Window::get_label_2()
{
    return ui->label_2->text();
}
QString Window::get_lineEdit()
{
    return ui->lineEdit->text();
}

........

Zamiast tego chciałem napisać jedną funkcje której parametrem będzie nazwa obiektu zamieszczonego w oknie, coś w rodzaju:

C/C++
QString Window::get_text( Qstring obj )
{
    //return ui->obj->text();
}

lecz jeszcze nie jestem jeszcze biegły w QT oraz wyrażeniach lambda




P-166297
czaffik
» 2017-11-01 12:57:38
Funkcje lambda byłyby potrzebne gdybyś chciał podpiąć jedną funkcję pod wiele kontrolek, np pod kilka przycisków podpiąć funkcję zwracającą jego opis:
C/C++
QString get_description( int num )
{
    switch( num )
    ....
    /// itd
}

/// gdzieś w konstruktorze:
connect( ui->pushButton_4, & QPushButton::clicked,[ & ] { get_description( 4 ); } );
Uwaga, jeśli funkcja z klasy kontrolki jest przeładowana to wywołanie connecta z funkcją lambada może być bardziej zawiłe, chociaż już nie pamiętam jak to wygląda, nie mogę znaleźć.

Jeżeli chcesz mieć tylko taką funkcję bez podpinania do jakichś zdarzeń kontrolek to nie jestem pewien, może coś takiego:
C/C++
QString Window::get_text( QWidget obj )
{
    return obj->text();
}
tylko musisz sprawdzić czy po pierwsze wszystkie kontrolki dziedziczą po QWidget, po drugie czy klasa QWidget zawiera metodę getText() lub text(), jeśli nie, to albo szukasz dalej takiej klasy która spełnia dwa powyższe warunki, albo wirtualnie numerujesz sobie kontrolki w oknie i jedziesz ze switchem.
P-166320
« 1 »
  Strona 1 z 1