Strumenti Utente

Strumenti Sito


Barra laterale

programmazione:qt:messagebox

Le messagebox in Qt

Autore: Fabio Di Matteo
Ultima revisione: 08/05/2014

Info, critical

Di seguito alcuni esempi di messagebox nella modalita' informazione ed errore critico. Per usare le messagebox si deve sempre includere l'header:

#include <QMessageBox>

Critical

QMessageBox::critical(0, tr("Attenzione"), tr("It was not possible to turn off the computer.\n"), QMessageBox::Ok); 

Info

 QMessageBox::information(0, tr("Titolo"), tr("Testo della messagebox"), QMessageBox::Ok);

Piu' pametri per la nostra messagebox

E' possibile personalizzare maggiornamente le nostre messagebox utilizzando direttamente la classe QMessageBox . Ecco un esempio. Per ulteriori informazioni sull'utilizzo è meglio dare una sguardo alla classe QMessageBox

QMessageBox msgBox;
msgBox.setWindowTitle("title");
//si puo' cambiare l'icona standard sostituendo QMessageBox::Information con 
//oppure: QMessageBox::NoIcon, QMessageBox::Question, QMessageBox::Information, QMessageBox::Warning, QMessageBox::Critical 
msgBox.setIcon ( QMessageBox::Information ); 
msgBox.setText("Testo della messagebox");
msgBox.setStandardButtons(QMessageBox::Ok);

Yes, no

#include <QMessageBox>
...
        //Test msgbox
	QMessageBox msgBox;
	msgBox.setWindowTitle("title");
	msgBox.setText("Ti piace questa bella messagebox");
	msgBox.setStandardButtons(QMessageBox::Yes| QMessageBox::No);
 
	if(msgBox.exec() == QMessageBox::Yes){
	  qDebug()<< "Hai risposto Si" ; 
	}else {
	  qDebug()<< "Hai risposto No" ; 
	}

Forma contratta

E' disponibile anche la forma contratta , a discapito di alcune opzioni:

#include <QMessageBox>
...
int myRes=QMessageBox::question(0, "Titolo", "Che risponderai?", QMessageBox::Yes|QMessageBox::No);
 
	if(myRes == QMessageBox::Yes){
	  qDebug()<< "Hai risposto Si" ; 
	}else {
	  qDebug()<< "Hai risposto No" ; 
	}

Personalizzare il testo dei bottoni

Utilizzeremo l'esempio precedente yes/no:

#include <QMessageBox>
...
 
//Test msgbox
	QMessageBox msgBox;
	msgBox.setIcon ( QMessageBox::Information );
	msgBox.setWindowTitle("title");
	msgBox.setText("Ti piace questa bella messagebox");
 
	//Specifico che tipo di bottoni standard voglio visualizzare
        msgBox.setStandardButtons(QMessageBox::Yes| QMessageBox::No);
 
        //Assegno del testo personalizzato per i bottoni, in questo caso si e no
        msgBox.setButtonText(QMessageBox::Yes, "Si");
	msgBox.setButtonText(QMessageBox::No, "No");
 
	if(msgBox.exec() == QMessageBox::Yes){
	  qDebug()<< "Hai risposto Si" ; 
	}else {
	  qDebug()<< "Hai risposto No" ; 
	}

Ovviamente è possibile internazionalizzare il nostro testo personalizzato con la funzione tr() di Qt. Ecco come:

...
msgBox.setButtonText(QMessageBox::Yes, tr("Si"));
...

programmazione/qt/messagebox.txt · Ultima modifica: 18/04/2018 - 15:48 (modifica esterna)