2016-06-07 6 views
6

У меня есть QMessageBox, который я хотел бы, чтобы он был больше. Это простой QMessageBox с двумя стандартными кнопками, Ok и Cancel. Проблема в том, что она очень мала для целей моего приложения. Код показывает, как это:Как изменить размер 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;} 

Я попробовал несколько способов увеличить размер:

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

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

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

Я даже очищен и восстановлен, и он собирает все, но ничего не вступит в силу ...

Do у вас есть идея о том, как установить размер QMessageBox «вручную»? Благодарю.

ответ

17

Вы можете редактировать CSS метки:

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

Аналогичным образом можно изменить CSS кнопок, чтобы добавить запас или сделать их больше.

Например:

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

Существует также 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()); 

Но это не похоже на работу для всех.

+0

Да, это решение. Но теперь кнопки и текстовые дисплеи находятся вне шкалы. Как я могу увеличить пропорциональность? – DYangu

+0

Он работает лучше с высотой 'msg.setStyleSheet (" QLabel {height: 300px; min-height: 300px; max-height: 300px;} ");' – DYangu

+1

@DYangu, отредактированный с помощью другого примера css, добавленного для изменения размера кнопок. Вы можете играть с css, но без точного результата в виду я не могу дать ничего более конкретного. – coyotte508