2015-12-10 2 views
0

Испытываю с кодом ниже:QProgressDialog: Как настроить размер диалогового окна в соответствии с его содержимым?

QProgressDialog* dialog = new QProgressDialog("Message", "Close", 0, 10); 
dialog->setWindowTitle("Long Long Long Long Title"); 
dialog->setCancelButtonText("Long Long Long Click this button to cancel"); 
dialog->setWindowModality(Qt::ApplicationModal); 
dialog->adjustSize(); 
dialog->setValue(5); 

Название и отменить текст кнопки вырезаны. Я вызвал adjustSize(), но это не сработало. Как настроить размер диалогового окна, чтобы он соответствовал его содержимому?

enter image description here

+0

Используйте 'Layout's, проверьте [документы] (http://doc.qt.io/qt- 5/примеры-layouts.html). – KernelPanic

+0

Это не выглядит красиво, когда кнопка имеет такое длинное имя. Лучше указать короткое имя и использовать длинное описание в виде текста подсказки инструмента. – vahancho

+0

@KernelPanic, QProgressDialog предоставляется QT, могу ли я отредактировать его макет? – ldlchina

ответ

2

Вы можете использовать следующее: использовать QLayout ...

QProgressDialog* dialog = new QProgressDialog("Message", "Close", 0, 10); 
dialog->setWindowTitle("Long Long Long Long Title"); 
dialog->setCancelButtonText("Long Long Long Click this button to cancel"); 
dialog->setWindowModality(Qt::ApplicationModal); 
dialog->setValue(5); 

QVBoxLayout *layout = new QVBoxLayout; 
foreach (QObject *obj, dialog->children()) { 
    QWidget *widget = qobject_cast<QWidget *>(obj); 
    if (widget) 
     layout->addWidget(widget); 
} 
dialog->setLayout(layout); 
+0

Решение работает. Благодарю. – ldlchina

Смежные вопросы