2

我创建一个QProgressDialog,设置一个QProgressBar。设置格式

“正在处理 %m 的 %v 部分。完成百分比:%p。”

QProgressBar. 但是文本被剪切了,而不是整个进度条显示在对话框上。

在此处输入图像描述

如何调整宽度以显示整个进度条?

4

1 回答 1

2

这是一个示例,用于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);
于 2015-11-23T11:45:55.863 回答