我在我的程序中选择并加载一些大的Dicom文件。整个加载过程需要很长时间(取决于文件的数量,但如果文件很多,整个过程可能需要几分钟)。我希望在文件上传进行时显示“等待符号”或类似的东西。我搜索了它,但我没有得到任何明确的信息。
我的选择和上传部分代码如下:
void MainWindow::showTheSelectedList()
{
QFileDialog * fileDialog = new QFileDialog(this);
fileDialog->setFileMode(QFileDialog::ExistingFiles);
QListView* list = fileDialog->findChild<QListView*>("listView");
if(list)
{
list->setSelectionMode(QAbstractItemView::MultiSelection);
}
QTreeView* tree = fileDialog->findChild<QTreeView*>();
if(tree)
{
tree->setSelectionMode(QAbstractItemView::MultiSelection);
}
if(fileDialog->exec())
{
if(fileDialog->selectedFiles().size()>0)
{
int listsize=stringList.size();
for(int i=0;i<listsize;i++)
{
// get the name of the file
// check if the file is dicom
// upload if the file is dicom
// after uploading, get the pixel data of that file
// use the pixel data and make a icon out of it
//then insert the icon in an a QTablewView
}
}
}
//show the QtableView
}
您可以告诉我在上传部分运行时我在哪里以及如何显示等待的标志或符号?
由于
答案 0 :(得分:3)
我认为您正在寻找QProgressBar课程。文档在下面说明了这一点。您需要设置最小值和最大值,它将为您完成工作。
QProgressBar小部件提供水平或垂直进度条。
进度条用于向用户提供操作进度的指示,并向他们保证应用程序仍在运行。
进度条使用步骤的概念。您可以通过指定最小和最大可能步长值来设置它,并且它将显示稍后为其提供当前步长值时已完成的步骤百分比。百分比的计算方法是将进度(value() - minimum())除以maximum() - minimum()。
您可以使用setMinimum()和setMaximum指定最小和最大步数。使用setValue()设置当前步数。可以使用reset()将进度条倒回到开头。
如果最小值和最大值都设置为0,则条形图显示忙碌指示符而不是步骤百分比。例如,当使用QNetworkAccessManager无法确定正在下载的项目的大小时下载项目时,这很有用。
我认为根据问题不能提供更多细节,因为工作循环似乎没有在那里提供实际代码的情况下进行评论,但是这个文档应该清楚地说明。
请注意,我个人甚至会将工作循环移动到一个自己的工作线程,如果它是值得的,它应该是一个进度条。至于进度条,你可能会写这样的东西:
QProgressBar bar(this);
bar.setRange(maximum, maximum);
bar.setValue(minimum);
bar.show();
答案 1 :(得分:1)
对话框:
我的新手建议是在for循环中使用进度条,并在每个文件完成加载时递增进度条。
如果您需要更多详细信息,请与我们联系。