Russian Qt Forum
Сентябрь 30, 2024, 22:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Как поймать событие окончания изменения размеров окна?  (Прочитано 16953 раз)
Tonal
Гость
« Ответ #15 : Январь 30, 2008, 08:15 »

Кстати, в WinApi есть оконные события: WM_ENTERSIZEMOVE и WM_EXITSIZEMOVE - я их использовал в такой же ситуации.
Неужели в Qt нет аналога? Может на официальном форуме поспрошать?
Записан
sint
Гость
« Ответ #16 : Январь 30, 2008, 10:36 »

В свое время под Delphi было тоже что то типа resize и resizing (могу ошибиться).
А в qt переопределил event у QWidget, потягал окно и проанализировал по хелпу все, что выдало на консоль. Ничего нужного. Так что вывод неутешителен.

Код:
virtual bool event ( QEvent * event ){
   qDebug() << "MyWidget::event:" << event->type();
   return QWidget::event (  event );
  }


Кстати, в WinApi есть оконные события: WM_ENTERSIZEMOVE и WM_EXITSIZEMOVE - я их использовал в такой же ситуации.
Неужели в Qt нет аналога? Может на официальном форуме поспрошать?
Записан
Alex03
Гость
« Ответ #17 : Январь 30, 2008, 16:20 »

ИМХО Отдельный тред создающий нужное изображение - не так уж и страшно.
Записан
sint
Гость
« Ответ #18 : Январь 30, 2008, 17:14 »

Если, допустим, у меня несколько mdichild окон и я даю команду выровнить каскадом.... а при отрисовке используются общие ресурсы... со всеми вытекающими (изменение порядка меньшее из зол). Не думаю, что это тот случай, когда необходима многопоточность :-) Хотя могу ошибиться.
ИМХО Отдельный тред создающий нужное изображение - не так уж и страшно.
Записан
Germiona
Гость
« Ответ #19 : Апрель 09, 2008, 15:50 »

А не могли бы вы конкретно привести пример использования функции bool spontaneous()
Записан
sint
Гость
« Ответ #20 : Апрель 09, 2008, 21:47 »

А не могли бы вы конкретно привести пример использования функции bool spontaneous()

Да у меня с этим не получилось. Или я не понял чего. Могу в рамках демонстрации то, что осталось в тестовом проекте.

Код:

class MyWidget: public QWidget {
public:
 MyWidget(): QWidget(){ }
protected:
 /*virtual bool event ( QEvent * event ){
//qDebug() << "MyWidget::event:" << event->type();
 return QWidget::event (  event );
}*/
 virtual void resizeEvent ( QResizeEvent * e ){
  if (e->spontaneous())
   qDebug("mouse");
  else // программно
   qDebug("program");
  QWidget::resizeEvent(e);
 }
 virtual void keyPressEvent(QKeyEvent* e){
  QWidget::keyPressEvent(e);
  if (e->key() == Qt::Key_F4) {
   QSize s = size();
   resize(s.width() +5, s.height() + 5);
  }
 }
};

int main(int argc, char *argv[]){
  QApplication1 app(argc, argv);
  MyWidget wg;
  wg.setGeometry(200, 200, 800, 600);
  wg.show();
  return app.exec();
}

Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 21.