Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 4475 razy

Sygnały i sloty w Qt są wykorzystywane do komunikacji pomiędzy oknem programu a kontrolką lub bezpośrednio pomiędzy kontrolkami. Sygnały i sloty można łączyć ręcznie wpisując odpowiedni kod, jednakże możliwe jest również zrobienie tego w trybie projektowania Desing. W tym celu utworzyć należy projekt z dwiema kontrolkami:

Widok utworzonego projektu GUI
Rys. 1
Widok utworzonego projektu GUI

Warto zmienić domyślne właściwości tych kontrolek:

Teraz należy kliknąć na kontrolce Push button prawym przyciskiem myszy i z menu kontekstowego wybrać pozycję Przejdź do slotu&dots;. Po tej czynności ukazać się powinno okno Przejdź do slotu, w którym niezwłocznie należy kliknąć pozycję clicked().

Okno Przejdź do slotu
Rys. 2
Okno Przejdź do slotu

Po wykonaniu tej czynności program powinien utworzyć automatycznie sygnał o nazwie on_write_clicked i przenieść do tak utworzonego sygnału pokazując taki oto kod:

#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_write_clicked() { }

Klasa MainWindow zajmuje się obsługą wszystkiego co dotyczy GUI programu. Wewnątrz tej klasy masz dostęp do wszystkich obiektów klas, które reprezentują kontrolki wstawione w widoku projektowania Design. Dostęp do nich jest z poziomu obiektu o nazwie ui (user interface). Oto jak wykorzystując ten obiekt można się odwołać do utworzonej wcześniej kontrolki Label i zmienić tekst przez nią wyświetlany:

void MainWindow::on_write_clicked() { ui->helloWorld->setText("Hello World!"); }

Powyższy kod zmieni tekst zawarty w kontrolce Label z wcześniej ustawionego na Hello World!. Dostęp do wszystkich kontrolek programu utworzonych w widoku projektowania Design będzie zawsze możliwy z poziomu obiektu ui.