crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> создание панели
Rosster
  опции профиля:
сообщение 5.12.2009, 1:07
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 23.11.2009
Пользователь №: 1254

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет, кто-нить подскажет как создать панельку, наподобие "Подождите...",чтобы можно было ее показывать и прятать, например, функциями show() и hide(). Эту панельку можно создать с помощью QLabel, но вот чтоб играть как с классом у меня что-то не получается. Примеры с прогресс баром не подходят, нужно именно панель, но без создания окна как QWidget, не нужны кнопки закрыть и т.д., просто показ панели.
Спасибо
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrewshkovskii
  опции профиля:
сообщение 5.12.2009, 1:36
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 351
Регистрация: 27.12.2008
Пользователь №: 467

Спасибо сказали: 18 раз(а)




Репутация:   1  


Тебе нужен модальный(метод exec() у QDialog) диалог без кнопок который появляется по сигналу и прячется по таймеру (или по какому-то иному событию).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.12.2009, 8:30
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Rosster, посмотри флаги в конструкторе QWidget, они позволяют управлять наличием заголовка окна.
enum Qt::WindowType
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rosster
  опции профиля:
сообщение 5.12.2009, 14:38
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 23.11.2009
Пользователь №: 1254

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо помогло. Но при динамической загрузке ui файла, когда создается объект
QUiLoader uiLoader(this);
тратится 30Мб, это для моей программы неприемлемо, причем после завершения функции (удаления родителя), он должен освободить память. Как можно решить данную проблему? Или придется встраивать в проект доп. класс как обычно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.12.2009, 18:08
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Rosster, я думаю, неосвобождение памяти связано с тем, что Qt кэширует её, т.е. повторная загрузка будет быстрее, т.е. уже выделено 30метров (ещё 30 метров съедаться не будет).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rosster
  опции профиля:
сообщение 7.12.2009, 19:45
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 23.11.2009
Пользователь №: 1254

Спасибо сказали: 0 раз(а)




Репутация:   0  


Litkevich Yuriy, это я уже проверил и это так и есть. Но вся фишка в том, что это плохо сказывается на маломощных компах с маленькой памятью. Вот, например, пишу программу где в начале программы динамически загружается ui, но потом загружаться больше ничего не будет,а работа продолжается часа 2 загружая свободную память и тогда освобождение 30 метров необходимо. По мне это минус, я бы на места разработчиков дал возможность пользователю управлять этим, или это уже есть, но пока никак не найду
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 7.12.2009, 21:23
Сообщение #7


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Ну я вот так делаю, когда генерится вывод отчета в excel:
//в конструкторе 1 раз создал и все
m_pDialog = new QDialog();
m_pDialog->setWindowTitle(qApp->tr("Пожалуйста, подождите...Идет формирование отчета."));
int nWD = QApplication::desktop()->width();
int nHD = QApplication::desktop()->height();
int nWC = 400;
int nHC = 20;
m_pDialog->setGeometry((nWD - nWC) / 2, (nHD - nHC) / 2, nWC, nHC);
m_pDialog->setWindowFlags(Qt::Drawer);
//а потом просто
m_pDialog->setVisible(true);
m_pDialog->setVisible(false);

Или это не то?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.12.2009, 5:20
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Rocky, что-то я не понял к чему это. Вроде последний раз речь шла о неосвобождении памяти QUiLoader'ом
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 12:24