Как показать & quot; ожидание & quot; пока файлы загружаются в приложение Qt?

Я выбираю и загружаю несколько больших файлов 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
}

Не могли бы вы сообщить мне, где и как я могу показать знак ожидания или символ во время загрузки части?

Спасибо

2

Решение

Я думаю, что вы ищете QProgressBar учебный класс. Документация поясняет это ниже. Вам нужно будет установить минимальные и максимальные значения, и он сделает всю работу за вас.

Виджет QProgressBar предоставляет горизонтальный или вертикальный индикатор выполнения.

Индикатор выполнения используется, чтобы дать пользователю представление о ходе выполнения операции и убедить его в том, что приложение все еще работает.

Индикатор выполнения использует концепцию шагов. Вы устанавливаете его, указав минимальное и максимальное возможные значения шага, и он будет отображать процент шагов, которые были выполнены, когда вы позже дадите ему текущее значение шага. Процент рассчитывается путем деления прогресса (значение () — минимум ()) делится на максимум () — минимум ().

Вы можете указать минимальное и максимальное количество шагов с помощью setMinimum () и setMaximum. Текущее количество шагов устанавливается с помощью setValue (). Индикатор выполнения может быть перемотан в начало с помощью reset ().

Если для минимума и максимума установлено значение 0, на панели отображается процент занятости вместо процента шагов. Это полезно, например, при использовании QNetworkAccessManager для загрузки элементов, когда они не могут определить размер загружаемого элемента.

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

Обратите внимание, что я лично даже переместил бы рабочий цикл в собственный рабочий поток, если он настолько полезен, что заслуживает прогресс-бар. Что касается индикатора выполнения, вы, вероятно, написали бы что-то вроде этого:

QProgressBar bar(this);
bar.setRange(maximum, maximum);
bar.setValue(minimum);
bar.show();
3

Другие решения

Диалоговое окно:

Мой совет новичку будет использовать индикатор выполнения внутри вашего цикла for и увеличивать индикатор выполнения по мере загрузки каждого файла.

Дайте мне знать, если вам нужно больше деталей.

1

По вопросам рекламы [email protected]