Często w programach z graficznym interfejsem użytkownika wykorzystuje się okna dialogowe Message box. Takie okna mogą zawierać pewne informacje jak np. ostrzeżenia, czy powiadomienia. Mogą one również zawierać zapytanie, np. czy jesteś pewny, że chcesz zamknąć program bez zapisywania zmian. Klasa QMessageBox odpowiedzialna za tworzenie okien dialogowych typu Message box jest dostępna po załączeniu pliku nagłówkowego QMessageBox.
Tworzenie okna informacji
Klasa QMessageBox zawiera metodę statyczną information, która umożliwia w łatwy sposób utworzyć okno dialogowe z ikonką litery i na niebieskim kole. Oto przykładowy kod wywołujący takie okno dialogowe:
QMessageBox::information(this, "Tytuł okna", "To jest okienko informacji" );
Po zamknięciu okna dialogowego metoda information zwraca id przycisku, który został wciśnięty. Co ważne można samemu ustalić zestaw przycisków wyświetlanych w oknie dialogowym wykorzystując kombinację następujących flag:
QMessageBox::NoButton;
QMessageBox::Ok;
QMessageBox::Cancel;
QMessageBox::Yes;
QMessageBox::No;
QMessageBox::Abort;
QMessageBox::Retry;
QMessageBox::Ignore;
QMessageBox::YesAll;
QMessageBox::NoAll
Przykład utworzenia okna dialogowego z kilkoma przyciskami:
Klasa QMessageBox ma również metodę statyczną question, która tworzy okno dialogowe z pytaniem skierowanym do użytkownika. Tego typu okno różni się od poprzedniego w zasadzie tylko ikonką, którą jest znak zapytania na niebieskim kole. Oto przykład:
Istnieje również metoda statyczna warning, która z kolei umożliwia wyświetlenie okna dialogowego z ikonką wykrzyknika na żółtym trójkącie. Oto przykład użycia tej metody:
QMessageBox::warning(this, "Ostrzeżenie", "Zamknąć program bez zapisywania zmian?", QMessageBox::Yes | QMessageBox::No);
Tworzenia okna z jednym standardowym przyciskiem i bez ikonki
Metodą statyczną about można utworzyć okno dialogowe, w którym zamieszczona może zostać krótka wiadomość.
Tworzenie obiektu klasy QMessageBox i wywoływanie okna dialogowego
Można również ręcznie utworzyć własne okno dialogowe Message box tworząc obiekt klasy QMessageBox. Oto przykład:
QMessageBox msg(this);
msg.setText("Inforacja");
msg.setDetailedText("dodaje przycisk diteils po którego wciśnięciu pokazuje się kontrolka z tym tekstem");
msg.setWindowTitle("Tytuł");
msg.exec(); // tworzy okno dialogowe i po jego zamknięciu zwraca id przycisku wciśniętego