2015-11-23 2 views
2

Создаю QProgressDialog, установите QProgressBar. Установите форматQProgressDialog: как настроить ширину, чтобы показать весь индикатор выполнения?

«Обработка раздела% v из% м. Процент выполнен:% стр.»

до QProgressBar. Но текст вырезается, а не весь индикатор выполнения отображается в диалоговом окне.

enter image description here

Как настроить ширину, чтобы показать весь прогресс бар?

+0

Установка фиксированной ширины может решить эту проблему, но я не хочу жестко задавать ширину. – ldlchina

+1

может быть, установите минимальную ширину, а не фиксированную ширину? – ramtheconqueror

ответ

0

Вот пример, который использует QFontMetrics для получения ширины текста строки выполнения, а затем добавляет 100px к этому для самой панели выполнения. Когда будет показано диалоговое окно, оно будет изменено до этой ширины.

auto dialog = new QProgressDialog(); 
dialog->setWindowTitle("Progress"); 
dialog->setLabelText("Test progress dialog"); 

auto bar = new QProgressBar(dialog); 
bar->setTextVisible(true); 
bar->setValue(50); 
bar->setFormat("Processing section %v of %m. Percentage completed: %p"); 
dialog->setBar(bar); 

// Use QFontMetrics to get the width of the bar text, 
// and then add 100px for the progress bar itself. Set 
// this to the initial dialog width. 
int width = QFontMetrics(bar->font()).width(bar->text()) + 100; 
dialog->resize(width, dialog->height()); 
dialog->show(); 

Это позволяет избежать жесткого кодирования ширины, хотя это немного сложно. Я думаю, что просто установление разумной минимальной ширины, как показано ниже, вероятно, является лучшим/более простым решением:

dialog->setMinimumWidth(300); 
+0

Спасибо @ajshort, Это было бы обходным путем. Почему QProgressDialog не подходит для ширины? – ldlchina

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