Qt - standardowe okno dialogowe Message box

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

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:

Listing 1
  1. 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:

Listing 2
  1. if(QMessageBox::information(this, "Tytuł okna", "To jest okienko informacji", QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Ok)
  2. QMessageBox::information(this, "Kwiknąłeś", "Kwiknąłeś ok", QMessageBox::Ok);

Tworzenie okna zapytania

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:

Listing 3
  1. if(QMessageBox::question(this, "Lubisz go", "Lubisz Tuska?", QMessageBox::Ok | QMessageBox::No) == QMessageBox::Ok)
  2. QMessageBox::information(this, "Lubisz!", "Jak możesz!?", QMessageBox::Ok);
  3. else
  4. QMessageBox::information(this, "Nie lubisz!", "To dobrze!", QMessageBox::Ok);

Tworzenie okna ostrzeżenia

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:

Listing 4
  1. 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ść.

Listing 5
  1. QMessageBox::about(this, "About", "Program utworzono: 10-10-2010");

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:

Listing 6
  1. QMessageBox msg(this);
  2. msg.setText("Inforacja");
  3. msg.setDetailedText("dodaje przycisk diteils po którego wciśnięciu pokazuje się kontrolka z tym tekstem");
  4. msg.setWindowTitle("Tytuł");
  5. msg.exec(); // tworzy okno dialogowe i po jego zamknięciu zwraca id przycisku wciśniętego
Strony powiązane
strony powiązane
  1. doc.qt.io/qt-4.8/qmessagebox.html - opis klasy QMessageBox na stronie dokumentacji Qt

Komentarze