Russian Qt Forum
Февраль 05, 2012, 19:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Bring window to front  (Прочитано 6377 раз)
IGHOR
Крякер
****
Offline Offline

Сообщений: 357



WWW
« : Июнь 19, 2008, 03:25 »

Написал вювер картинок: http://ighor.info/JulyViewRC1.rar
вот соткнулся с проблемой, если окно с картинкой под окнами нужно перевести его на передний план.
По дабл клику на иконке в трею я делаю окно hide(), потом он топ а потом обратно в нормальное состояние и show() , тогда работает. Но такой метод не подходит к если связать разшырения файлов с прогой, и запускать файлы картинок, после етого окно картинки остается за окнами.
Каким способом можно перевести окно на передний план ?
« Последнее редактирование: Июнь 19, 2008, 03:29 от IGHOR » Записан

DropboxPlugin v2.0 is coming..
sendevent
Самовар
**
Offline Offline

Сообщений: 170



« Ответ #1 : Июнь 19, 2008, 17:24 »

QApplication::setActiveWindow ( QWidget * active ) | QWidget::activateWindow()?
Записан

не, ну а чо?
IGHOR
Крякер
****
Offline Offline

Сообщений: 357



WWW
« Ответ #2 : Июнь 19, 2008, 20:44 »

QApplication::setActiveWindow(this);
не работает, то же самое.
Но Спасибо за ответ:)
Записан

DropboxPlugin v2.0 is coming..
Sergeich
Moderator
Супер активный житель
*****
Offline Offline

Сообщений: 786


Сферический писец в вакууме


« Ответ #3 : Июнь 19, 2008, 21:05 »

QWidget::raise()
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 357



WWW
« Ответ #4 : Июнь 20, 2008, 13:54 »

QWidget::raise()
Не помагает
Записан

DropboxPlugin v2.0 is coming..
Sergeich
Moderator
Супер активный житель
*****
Offline Offline

Сообщений: 786


Сферический писец в вакууме


« Ответ #5 : Июнь 21, 2008, 00:27 »

Но такой метод не подходит к если связать разшырения файлов с прогой, и запускать файлы картинок, после етого окно картинки остается за окнами.
Каким способом можно перевести окно на передний план ?
А каким образом происходит запуск? Ты используешь что-нить типа SingleApplication?
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 357



WWW
« Ответ #6 : Июнь 22, 2008, 19:54 »

Но такой метод не подходит к если связать разшырения файлов с прогой, и запускать файлы картинок, после етого окно картинки остается за окнами.
Каким способом можно перевести окно на передний план ?
А каким образом происходит запуск? Ты используешь что-нить типа SingleApplication?

Да использую SingleApplication
Записан

DropboxPlugin v2.0 is coming..
Константин
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2575



« Ответ #7 : Июнь 23, 2008, 00:45 »

Код:
void activateMainWidget()
{
    QWidgetList widgets = QApplication::allWidgets();
    if (!widgets.isEmpty()) {
        QWidget *w = widgets.at(0);
        w->setWindowState(w->windowState() & ~Qt::WindowMinimized);
        w->raise();
        w->activateWindow();
    }
}
специально не стал включать данный код в сингаппликэйшен, т.к. не имеет прямого отношения к задаче
« Последнее редактирование: Июнь 23, 2008, 01:19 от Константин » Записан

4.7
Gentoo ~amd64 / winxpprosp2 / fremantle armel

Qt - Qt Development Frameworks; QT - QuickTime
Sergeich
Moderator
Супер активный житель
*****
Offline Offline

Сообщений: 786


Сферический писец в вакууме


« Ответ #8 : Июнь 23, 2008, 11:37 »

Добавь перед посылкой сообщения экземпляру приложения
Код:
#ifdef Q_WS_WIN
AllowSetForegroundWindow( ASFW_ANY );
#endif
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 357



WWW
« Ответ #9 : Июль 04, 2008, 22:16 »

Код:
void activateMainWidget()
{
    QWidgetList widgets = QApplication::allWidgets();
    if (!widgets.isEmpty()) {
        QWidget *w = widgets.at(0);
        w->setWindowState(w->windowState() & ~Qt::WindowMinimized);
        w->raise();
        w->activateWindow();
    }
}
специально не стал включать данный код в сингаппликэйшен, т.к. не имеет прямого отношения к задаче

Ноль реакции

Добавь перед посылкой сообщения экземпляру приложения
Код:
#ifdef Q_WS_WIN
AllowSetForegroundWindow( ASFW_ANY );
#endif

Когда вставляю код выдает ошибку: ни AllowSetForegroundWindow ни ASFW_ANY не найдено.
Записан

DropboxPlugin v2.0 is coming..
Racheengel
phpBB Супер
******
Offline Offline

Сообщений: 1144

чтоб работа волком не казалась :)


WWW
« Ответ #10 : Ноябрь 19, 2008, 12:14 »

Похожая фигня у меня сейчас (кути 4.4) - под виндой набор

        w->show();
        w->raise();
        w->activateWindow();  // это должно быть обязательно после show()

работает, но под КДЕ не хочет.
Записан

:: Jedem Das Seine ::
:: Каждому - Своё ::

http://sintegrial.com - всякий хороший Qt софт
http://www.quiss.com - professional visual inspection systems
Racheengel
phpBB Супер
******
Offline Offline

Сообщений: 1144

чтоб работа волком не казалась :)


WWW
« Ответ #11 : Ноябрь 20, 2008, 11:24 »

Фигня однако...
Под Х11 raise() не пашет напрочь.
Qt::WindowStaysOnTopHint помогает, НО после этого окно всегда висит поверх других.
Убирание этого флага приводит к скрытию окна.

Короче отправил тролям багрепорт.
Записан

:: Jedem Das Seine ::
:: Каждому - Своё ::

http://sintegrial.com - всякий хороший Qt софт
http://www.quiss.com - professional visual inspection systems
Alex Custov
Хакер
*****
Online Online

Сообщений: 677


« Ответ #12 : Ноябрь 20, 2008, 12:30 »

а буквально несколькими строками ниже... http://www.prog.org.ru/topic_7851_0.html
про netwm написано тут: http://www.linux.org.ru/wiki/en/NETWM
Записан
Alex Custov
Хакер
*****
Online Online

Сообщений: 677


« Ответ #13 : Ноябрь 20, 2008, 12:33 »

работает, но под КДЕ не хочет.

ты наверно даже не читал, что я написал в ветке про активное окно  Смеющийся
Записан
Racheengel
phpBB Супер
******
Offline Offline

Сообщений: 1144

чтоб работа волком не казалась :)


WWW
« Ответ #14 : Ноябрь 20, 2008, 15:01 »

Нет, почему, я пробовал справиться с проблемой функциями Х11.
Например, XRaiseWindow().
Однако это не помогло Грустный
Можно поподробнее, что значит "дернуть атом _NET_ACTIVE_WINDOW"?  Имеется в виду XSendEvent() ?

Да, ветки наверное стоит склеить Улыбающийся А то тема одна и та же.
Записан

:: Jedem Das Seine ::
:: Каждому - Своё ::

http://sintegrial.com - всякий хороший Qt софт
http://www.quiss.com - professional visual inspection systems
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  

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