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

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

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

Сообщений: 390



Просмотр профиля WWW
« : Июнь 19, 2008, 03:25 »

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

QApplication::setActiveWindow ( QWidget * active ) | QWidget::activateWindow()?
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #2 : Июнь 19, 2008, 20:44 »

QApplication::setActiveWindow(this);
не работает, то же самое.
Но Спасибо за ответ:)
Записан
Sergeich
Гость
« Ответ #3 : Июнь 19, 2008, 21:05 »

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

Сообщений: 390



Просмотр профиля WWW
« Ответ #4 : Июнь 20, 2008, 13:54 »

QWidget::raise()
Не помагает
Записан
Sergeich
Гость
« Ответ #5 : Июнь 21, 2008, 00:27 »

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

Сообщений: 390



Просмотр профиля WWW
« Ответ #6 : Июнь 22, 2008, 19:54 »

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

Да использую SingleApplication
Записан
ритт
Гость
« Ответ #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 от Константин » Записан
Sergeich
Гость
« Ответ #8 : Июнь 23, 2008, 11:37 »

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

Сообщений: 390



Просмотр профиля 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 не найдено.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #10 : Ноябрь 19, 2008, 12:14 »

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

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

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

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #11 : Ноябрь 20, 2008, 11:24 »

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

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

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #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
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #13 : Ноябрь 20, 2008, 12:33 »

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

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

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #14 : Ноябрь 20, 2008, 15:01 »

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

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

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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