2016-06-07 11 views
6

Ich habe eine QMessageBox, die ich möchte, dass es größer ist. Es ist eine einfache QMessageBox mit zwei Standardtasten, Ok und Abbrechen. Das Problem ist, dass es für die Zwecke meiner Anwendung sehr klein ist. Code zeigt wie folgt aus:Wie kann ich die Größe von QMessageBox ändern?

QMessageBox msg; 
msg.setText("Whatever"); 
msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); 
msg.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); 

int ret = msg.exec(); 
switch (ret) { 
    case QMessageBox::Ok: 
     ui->textEdit->clear(); 
     break; 
    case QMessageBox::Cancel: 
     break;} 

ich mehr Möglichkeiten versucht, die Größe zu erhöhen:

msg.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); 

msg.setSizePolicy(QSizePolicy::Maximum,QSizePolicy::Maximum); 

msg.setFixedHeight(600); 
msg.setFixedWidth(600); 

ich sogar gelöscht und neu aufgebaut, und es kompiliert alles, aber nichts in Kraft ...

Do Sie haben eine Idee, wie Sie die Größe von QMessageBox "von Hand" einstellen können? Vielen Dank.

Antwort

17

Sie können die CSS des Etiketts bearbeiten:

msg.setStyleSheet("QLabel{min-width: 700px;}"); 

Sie können die CSS der Schaltflächen in ähnlicher Weise bearbeiten einen Rand hinzuzufügen oder sie zu vergrößern.

Zum Beispiel:

msg.setStyleSheet("QLabel{min-width:500 px; font-size: 24px;} QPushButton{ width:250px; font-size: 18px; }"); 

Es gibt auch eine trick mentioned:

QSpacerItem* horizontalSpacer = new QSpacerItem(800, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); 
QGridLayout* layout = (QGridLayout*)msg.layout(); 
layout->addItem(horizontalSpacer, layout->rowCount(), 0, 1, layout->columnCount()); 

Aber dies scheint nicht für jeden zu arbeiten.

+0

Ja, das ist die Lösung. Aber jetzt sind Tasten und Textanzeige außerhalb des Maßstabs. Wie kann ich beides erhöhen, um verhältnismäßig zu sein? – DYangu

+0

Es funktioniert besser mit Höhe 'msg.setStyleSheet (" QLabel {Höhe: 300px; Min-Höhe: 300px; Max-Höhe: 300px;} ");' – DYangu

+1

@DYangu bearbeitet mit einem anderen CSS-Beispiel hinzugefügt, um die Größe der Tasten. Sie können mit dem CSS spielen, aber ohne ein präzises Ergebnis kann ich nichts Genaueres sagen. – coyotte508