2010-03-17 14 views
5
QMessageBox::about(this, "About Application", 
    "<h4>Application is a one-paragraph blurb</h4>\n\n" 
"Copyright 1991-2003 Such-and-such. " 
"For technical support, call 1234-56789 or see\n" 
"<a href=\"http://www.such-and-such.com\">http://www.such-and-such.com</a>"); 

Questo codice crea la finestra di messaggio di cui ho voluto avere con due eccezioni:Un "About" finestra di messaggio per una GUI con Qt

1) vorrei cambiare l'icona nel messaggio box con un file aaa.png

2) E mi piacerebbe avere il link cliccabile. Sembra un collegamento ipertestuale (è blu e sottolineato), ma il clic del mouse non funziona

Qualche idea?

risposta

2

Penso che dovresti creare un numero personalizzato QWidget per il tuo widget. In questo modo, puoi mettere il widget tutto ciò che desideri. Ad esempio, è possibile inserire QLabel utilizzando la proprietà openExternalLinks per il collegamento selezionabile.

Per visualizzare un'immagine personalizzata su QWidget, questo example può essere d'aiuto.

1

Per l'icona, è sufficiente impostare l'icona dell'applicazione. Qualcosa di simile a questo:

QApplication::setWindowIcon(QIcon(":/aaa.png")); // from a resource file 

quanto per rendere i link cliccabili, non credo che possa essere fatto con l'QMessageBox::about API direttamente.

+0

OK, può essere che mi potrebbe dire, in generale, il modo in cui puoi creare un widget con testo con collegamento ipertestuale all'interno? – Narek

1
QMessageBox msgBox; 
msgBox.setTextFormat(Qt::RichText); // this does the magic trick and allows you to click the link 
msgBox.setText("Text<br /><a href=\"http://www.such-and-such.com\">http://www.such-and-such.com</a>"); 
msgBox.setIcon(yourIcon); 
msgBox.exec(); 
0

Per riferimento futuro, la documentazione affermano che il tipo predefinito per textFormat is Qt::AutoText. I documenti affermano inoltre che Qt::AutoText is interpreted as Qt::RichText if Qt::mightBeRichText() returns true, otherwise as Qt::PlainText. Infine, mightBeRichText uses a fast and therefore simple heuristic. It mainly checks whether there is something that looks like a tag before the first line break. Quindi, dal momento che non hai un tag nella prima riga, si presume che sia un testo semplice. Impostalo esplicitamente su RichText con msgBox.setTextFormat(Qt::RichText); per farlo agire di conseguenza.

0

main.cpp

QApplication app(argc, argv); 
app.setWindowIcon(QIcon(":/images/your_icon.png")); 

mainwindow.cpp (nello slot se ne avete uno)

void MainWindow::on_aboutAction_triggered() 
{ 
    QMessageBox::about(0, "window title", "<a href='http://www.jeffersonpalheta.com'>jeffersonpalheta.com</a>"); 
} 
Problemi correlati