2

我正在我的程序中选择并加载一些大的 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
}

您能否指导我在上传部分运行时在哪里以及如何显示等待标志或符号?

谢谢

4

2 回答 2

3

我认为您正在寻找QProgressBar类。该文档在下面清楚地说明了这一点。您将需要设置最小值和最大值,它会为您完成这项工作。

QProgressBar 小部件提供水平或垂直进度条。

进度条用于向用户指示操作的进度,并向他们保证应用程序仍在运行。

进度条使用步骤的概念。您可以通过指定最小和最大可能的步长值来设置它,当您稍后给它当前步长值时,它将显示已完成的步长百分比。百分比是通过将进度(值() - 最小值())除以最大值() - 最小值()来计算的。

您可以使用 setMinimum() 和 setMaximum 指定最小和最大步数。当前步数由 setValue() 设置。进度条可以使用 reset() 倒回到开头。

如果最小值和最大值都设置为 0,则条形图显示忙碌指示符,而不是步数百分比。这很有用,例如,当使用 QNetworkAccessManager 下载项目时,他们无法确定正在下载的项目的大小。

我不认为可以根据问题提供更多详细信息,因为似乎在没有提供实际代码的情况下对工作循环进行了评论,但无论哪种方式,本文档都应该清楚。

请注意,我个人甚至会将工作循环移动到自己的工作线程中,如果它值得一个进度条的话。至于进度条,你可能会这样写:

QProgressBar bar(this);
bar.setRange(maximum, maximum);
bar.setValue(minimum);
bar.show();
于 2013-12-31T02:00:46.877 回答
1

对话框:

我的新手建议是在 for 循环中使用进度条,并在每个文件完成加载时增加进度条。

如果您需要更多详细信息,请告诉我。

于 2013-12-30T21:10:03.630 回答