2016-06-07 15 views
6

Mam QMessageBox, który chciałbym, aby był większy. Jest prosty QMessageBox z dwoma standardowymi przyciskami, Ok i Anuluj. Problem polega na tym, że jest bardzo mały dla celów mojej aplikacji. Kod pokazuje tak:Jak mogę zmienić rozmiar QMessageBox?

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;} 

Próbowałem kilka sposobów na zwiększenie rozmiaru:

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

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

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

nawet wyczyszczone i przebudowany i kompiluje wszystko, ale nic się skuteczna ...

Do masz pojęcie, jak ustawić rozmiar QMessageBox "ręcznie"? Dzięki.

Odpowiedz

17

można edytować CSS etykiety:

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

Można podobnie edytować CSS z przycisków, aby dodać margines lub je powiększyć.

Na przykład:

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

Istnieje również 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()); 

Ale to nie wydają się działać dla każdego.

+0

Tak, to rozwiązanie. Ale teraz przyciski i wyświetlanie tekstu są poza skalą. Jak mogę zwiększyć oba, aby były proporcjonalne? – DYangu

+0

Działa lepiej z wysokością 'msg.setStyleSheet (" QLabel {wysokość: 300px; min-wysokość: 300px; max-wysokość: 300px;} ");' – DYangu

+1

@DYangu edytowane z innym przykładem css dodanym w celu zmiany rozmiaru guziki. Możesz grać z css, ale bez precyzyjnego wyniku nie mogę podać nic bardziej konkretnego. – coyotte508