2015-12-10 1 views
0

je test avec le code ci-dessous:QProgressDialog: Comment ajuster la taille de la boîte de dialogue pour qu'elle corresponde à son contenu?

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

Le titre et le texte du bouton d'annulation sont coupés. J'ai appelé adjustSize(), mais cela n'a pas fonctionné. Comment ajuster la taille de la boîte de dialogue pour qu'elle corresponde à son contenu?

enter image description here

+0

Utilisez 'Layout's, cochez [docs] (http://doc.qt.io/qt- 5/examples-layouts.html). – KernelPanic

+0

Ce n'est pas joli quand un bouton a un nom si long. Il vaut mieux définir un nom court et utiliser une description longue comme texte d'info-bulle. – vahancho

+0

@KernelPanic, QProgressDialog est fourni par QT, puis-je modifier sa mise en page? – ldlchina

Répondre

2

Vous pouvez utiliser les éléments suivants: utiliser le 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

La solution fonctionne. Merci. – ldlchina