Russian Qt Forum
Ноябрь 23, 2024, 10:44
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Организация отображения выполнения нескольких длительных процессов
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Организация отображения выполнения нескольких длительных процессов (Прочитано 7959 раз)
YvenTitan
Самовар
Offline
Сообщений: 174
Организация отображения выполнения нескольких длительных процессов
«
:
Май 22, 2019, 12:56 »
Здравствуйте
У меня есть графическая программа, которая по нажатию кнопки выполняет последовательность некоторых длительные процессов.
Я бы хотел, организовать визуальное отображение процессов для пользователя, а потом это отображение скрыть.
В моем представлении это так: есть окно, при нажатии кнопки оно расширяется вниз и в появившейся области начинается отображение выполнения первого процесса (например передача файла по сети). Прогресс этого процесса отображается в QProgressBar. По окончании его начинается следующий (например верификация переданного файла) с QProgressBar и тд. В конце выводится сообщение о том, что все прошло успешно/не успешно и окно принимает первоначальный размер.
С помощью каких виджетов это (отображение состояния процессов) лучше организовать? Какой виджет использовать для отображения процесса? Может, на ваш взгляд, есть хорошая альтернатива расширению окна?
Записан
YvenTitan
Самовар
Offline
Сообщений: 174
Re: Организация отображения выполнения нескольких длительных процессов
«
Ответ #1 :
Май 22, 2019, 16:12 »
Разбираясь, у меня возник другой вопрос, на мой взгляд, более конкретный.
Я хочу сделать окно, которое имеет кнопку, нажав на которую появляются подробности процесса. (Пример во вложении)
У меня все подробности в нижней части окна.
Можно ли это сделать без resize(), не высчитывая размеры насколько увеличится окно? Что-то типа установил setVisible(true) и все подогналось
Записан
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Организация отображения выполнения нескольких длительных процессов
«
Ответ #2 :
Май 22, 2019, 16:33 »
Цитата: YvenTitan от Май 22, 2019, 16:12
Можно ли это сделать без resize(), не высчитывая размеры насколько увеличится окно? Что-то типа установил setVisible(true) и все подогналось
Попробуйте QWidget::adjustSize() использовать.
Записан
Пока сам не сделаешь...
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Организация отображения выполнения нескольких длительных процессов
«
Ответ #3 :
Май 23, 2019, 06:53 »
Цитата: YvenTitan от Май 22, 2019, 16:12
Можно ли это сделать без resize(), не высчитывая размеры насколько увеличится окно? Что-то типа установил setVisible(true) и все подогналось
Скрываете "маленький виждет" и вместо него показываете "большой". Если оба они в QVBoxLayout то он сам и подгонит. Придется побегать с флагами/установками, но решаемо. Трудности возникают когда нужно получить размер до show()
Записан
YvenTitan
Самовар
Offline
Сообщений: 174
Re: Организация отображения выполнения нескольких длительных процессов
«
Ответ #4 :
Май 23, 2019, 10:17 »
Я понимаю так. Если мне надо скрыть QTextEdit, то мне надо поместить QTextEdit и остальные виджеты в один QVBoxLayout.
Только при изменении видимости у меня окно, в котором все виджеты не меняет размер. Все как-то уплотняется или QTextEdit не помещается в экран.
С какими флагами и установками можно поэкспериментировать?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Организация отображения выполнения нескольких длительных процессов
«
Ответ #5 :
Май 23, 2019, 11:58 »
Цитата: YvenTitan от Май 23, 2019, 10:17
Только при изменении видимости у меня окно, в котором все виджеты не меняет размер. Все как-то уплотняется или QTextEdit не помещается в экран.
Значит тот парент widget (в лайаут которого помещен QTextEdit) - еще не окно или для него не установлена нужная QSizePolicy. Др словами или он сам не умеет расти/сжиматься или его парент не умеет (или не имеет лайаута).
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Организация отображения выполнения нескольких длительных процессов
«
Ответ #6 :
Май 23, 2019, 12:38 »
лучше сделать дополнительный виджет, в который помещать скрываемые и скрывать именно общий родитель, так меньше плясок с геометрией.
Хотя крови она попьёт.
Записан
Юра.
NoIdea
Новичок
Offline
Сообщений: 12
Re: Организация отображения выполнения нескольких длительных процессов
«
Ответ #7 :
Июнь 07, 2019, 23:20 »
Если под винду, то чтобы было модно не забудьте продублировать в QWinTaskbarButton::progress()
Так же можно отображать различные состояния QWinTaskbarButton::setOverlayIcon(const QIcon &icon)
Записан
Fregloin
Супер
Offline
Сообщений: 1025
Re: Организация отображения выполнения нескольких длительных процессов
«
Ответ #8 :
Июль 29, 2019, 11:18 »
Если много bakground процессов и/или потоков - может есть смысл написать небольшую модель/делегат, которая будет отображать список progress bar?
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...