Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT] Не получается переопределить minimize 
V
    Опции темы
rainbow86
Дата 6.1.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.10.2005

Репутация: нет
Всего: нет



Никак не получается переопределить minimize. Я хочу что б вместо обычного сворачивания приложение сворачивалось в трэй!
Вот код:
Код

bool MyWindow::eventFilter(QObject *obj, QEvent *event)
{
    if(event->type() == QEvent::WindowStateChange)
    {
        QWindowStateChangeEvent * ce = static_cast<QWindowStateChangeEvent*>(event);
        if ((windowState() & Qt::WindowMinimized) && !(ce->oldState() & Qt::WindowMinimized))
        {
            slotMinimizeToTray();
            return true;
        }
        else
            return false;
    }
    else return QMainWindow::eventFilter(obj, event);
}


Функция slotMinimizeToTray()
Код


void MyWindow::slotMinimizeToTray()
{
    hide();
    tray_icon->show();
}



Несмотря на то что возвращается true после slotMinimizeToTray() все равно вызывается стандартный обработчик???

PM MAIL   Вверх
nickless
Дата 6.1.2008, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 13
Всего: 181



rainbow86, попробуй добавить
Код

event->accept();



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
rainbow86
Дата 8.1.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.10.2005

Репутация: нет
Всего: нет



Код

event->accept();


не помогает  smile 
PM MAIL   Вверх
SABROG
Дата 8.1.2008, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



А здесь ты смотрел ? examples\desktop\systray\


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
rainbow86
Дата 8.1.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.10.2005

Репутация: нет
Всего: нет



Там нету переопределения minimize!!!
PM MAIL   Вверх
SABROG
Дата 8.1.2008, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(rainbow86 @ 8.1.2008,  14:26)
Там нету переопределения minimize!!!

Мне кажется это невозможно. И для чего его переопределять, если делается то что нужно - окно исчезает и в трее появляется иконка ?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
JackYF
Дата 8.1.2008, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



rainbow86, что говорит отладчик? до твоего куска кода (фильтра и вызова твоего сворачивания в трей) управление доходит?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
rainbow86
Дата 9.1.2008, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.10.2005

Репутация: нет
Всего: нет



Цитата

Мне кажется это невозможно. И для чего его переопределять, если делается то что нужно - окно исчезает и в трее появляется иконка ?

В том то и дело что окно не исчезает,а сворачивается. Оно исчезает только по закрытию и остается висеть в трее.

Цитата

rainbow86, что говорит отладчик? до твоего куска кода (фильтра и вызова твоего сворачивания в трей) управление доходит?


Код отрабатывает появляется значок в трее, окно исчезает, но потом срабатывает стандартный обработчики окно появляется в свернутом виде. Причем если его развернуть то видна только рамка, т.е. внутри окно пустое!!!

Это сообщение отредактировал(а) rainbow86 - 9.1.2008, 12:13
PM MAIL   Вверх
JackYF
Дата 9.1.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(rainbow86 @  9.1.2008,  11:11 Найти цитируемый пост)
Причем если его развернуть то видна только рамка, т.е. внутри окно пустое!!!

хм... похоже на то, что происходит ещё одно событие, кроме WindowStateChange, которое тоже надо отменить. Посмотри в списке событий.
Возможно также, что это баг. Какая у тебя версия QT?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
SABROG
Дата 9.1.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Попробуй вместо hide() пропиши:

Код

qApp->activeWindow->hide();


Или используй WinApi http://www.qtcentre.org/forum/showthread.php?t=23

Это сообщение отредактировал(а) SABROG - 9.1.2008, 13:06


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
JackYF
Дата 9.1.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(SABROG @  9.1.2008,  11:55 Найти цитируемый пост)
Или используй WinApi

это очень плохой выход. Кроссплатформенность летит к чёрту.

Это сообщение отредактировал(а) JackYF - 9.1.2008, 13:12


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
SABROG
Дата 9.1.2008, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(JackYF @ 9.1.2008,  13:11)
это очень плохой выход. Кроссплатформенность летит к чёрту.

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

Код

#if defined(Q_WS_WIN)
        ShowWindow(winId(), SW_HIDE);
#else
        hide();
#endif


Это сообщение отредактировал(а) SABROG - 9.1.2008, 13:32


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
JackYF
Дата 9.1.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(SABROG @  9.1.2008,  12:31 Найти цитируемый пост)
Тогда включит в блок свой код и проблема исчезнет:

не исчезнет, смотри его последнее сообщение. Проблема в том, что происходит лишнее, а не "не происходит то, что хочу".


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
SABROG
Дата 9.1.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Исчезнет если использовать 2 реализации перехвата сообщений, одна - WinApi, другая - стандартный метод Qt.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
JackYF
Дата 9.1.2008, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(SABROG @  9.1.2008,  15:50 Найти цитируемый пост)
2 реализации перехвата сообщений, одна - WinApi, другая - стандартный метод Qt.

это как вообще?..



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0818 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.