Название: Организация отображения выполнения нескольких длительных процессов Отправлено: YvenTitan от Май 22, 2019, 12:56 Здравствуйте
У меня есть графическая программа, которая по нажатию кнопки выполняет последовательность некоторых длительные процессов. Я бы хотел, организовать визуальное отображение процессов для пользователя, а потом это отображение скрыть. В моем представлении это так: есть окно, при нажатии кнопки оно расширяется вниз и в появившейся области начинается отображение выполнения первого процесса (например передача файла по сети). Прогресс этого процесса отображается в QProgressBar. По окончании его начинается следующий (например верификация переданного файла) с QProgressBar и тд. В конце выводится сообщение о том, что все прошло успешно/не успешно и окно принимает первоначальный размер. С помощью каких виджетов это (отображение состояния процессов) лучше организовать? Какой виджет использовать для отображения процесса? Может, на ваш взгляд, есть хорошая альтернатива расширению окна? Название: Re: Организация отображения выполнения нескольких длительных процессов Отправлено: YvenTitan от Май 22, 2019, 16:12 Разбираясь, у меня возник другой вопрос, на мой взгляд, более конкретный.
Я хочу сделать окно, которое имеет кнопку, нажав на которую появляются подробности процесса. (Пример во вложении) У меня все подробности в нижней части окна. Можно ли это сделать без resize(), не высчитывая размеры насколько увеличится окно? Что-то типа установил setVisible(true) и все подогналось Название: Re: Организация отображения выполнения нескольких длительных процессов Отправлено: ViTech от Май 22, 2019, 16:33 Можно ли это сделать без resize(), не высчитывая размеры насколько увеличится окно? Что-то типа установил setVisible(true) и все подогналось Попробуйте QWidget::adjustSize() использовать. Название: Re: Организация отображения выполнения нескольких длительных процессов Отправлено: Igors от Май 23, 2019, 06:53 Можно ли это сделать без resize(), не высчитывая размеры насколько увеличится окно? Что-то типа установил setVisible(true) и все подогналось Скрываете "маленький виждет" и вместо него показываете "большой". Если оба они в QVBoxLayout то он сам и подгонит. Придется побегать с флагами/установками, но решаемо. Трудности возникают когда нужно получить размер до show()Название: Re: Организация отображения выполнения нескольких длительных процессов Отправлено: YvenTitan от Май 23, 2019, 10:17 Я понимаю так. Если мне надо скрыть QTextEdit, то мне надо поместить QTextEdit и остальные виджеты в один QVBoxLayout.
Только при изменении видимости у меня окно, в котором все виджеты не меняет размер. Все как-то уплотняется или QTextEdit не помещается в экран. С какими флагами и установками можно поэкспериментировать? Название: Re: Организация отображения выполнения нескольких длительных процессов Отправлено: Igors от Май 23, 2019, 11:58 Только при изменении видимости у меня окно, в котором все виджеты не меняет размер. Все как-то уплотняется или QTextEdit не помещается в экран. Значит тот парент widget (в лайаут которого помещен QTextEdit) - еще не окно или для него не установлена нужная QSizePolicy. Др словами или он сам не умеет расти/сжиматься или его парент не умеет (или не имеет лайаута).Название: Re: Организация отображения выполнения нескольких длительных процессов Отправлено: lit-uriy от Май 23, 2019, 12:38 лучше сделать дополнительный виджет, в который помещать скрываемые и скрывать именно общий родитель, так меньше плясок с геометрией.
Хотя крови она попьёт. Название: Re: Организация отображения выполнения нескольких длительных процессов Отправлено: NoIdea от Июнь 07, 2019, 23:20 Если под винду, то чтобы было модно не забудьте продублировать в QWinTaskbarButton::progress()
Так же можно отображать различные состояния QWinTaskbarButton::setOverlayIcon(const QIcon &icon) Название: Re: Организация отображения выполнения нескольких длительных процессов Отправлено: Fregloin от Июль 29, 2019, 11:18 Если много bakground процессов и/или потоков - может есть смысл написать небольшую модель/делегат, которая будет отображать список progress bar?
|