Russian Qt Forum
Июнь 16, 2024, 03:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: сделать окно активным  (Прочитано 28651 раз)
ритт
Гость
« Ответ #15 : Октябрь 07, 2008, 15:40 »

[offtop]
действительно, чему тут удивляться? он же холоп, деревенщина...от бабушки ушёл, от медведя ушёл...
на печке недавно раскатывал - дурачок, одним словом...
[/offtop]

Перестаньте флудить.
Буду удалять.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #16 : Октябрь 07, 2008, 16:34 »

Нет, не помогает.
Уточню. В трее сидит класс (от QSystemTrayIcon), и когда возникает событие случается метод, в котором:

QDialog* f = new QDialog();
f->setWindowFlags(f->windowFlags() | Qt::WindowStaysOnTopHint);
...
f->show();
f->activateWindow(); // даже если добавить

Окно f получается неактивное.

1. Попробывать указать парент для диалога

Цитировать
Note that QDialog (an any other widget that has type Qt::Dialog) uses the parent widget slightly differently from other classes in Qt. A dialog is always a top-level widget, but if it has a parent, its default location is centered on top of the parent's top-level widget (if it is not top-level itself). It will also share the parent's taskbar entry.

Если

f->show();

небудет работать, то попробывать

f->show();
f->raise();

2. Можно попробывать воспользоваться вместо f->show(); методом f->exec();


Ну и наконец, если ничего не получиться, приаттачить минимальный компилябельный пример (как говорил Константин)
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
lana
Гость
« Ответ #17 : Октябрь 07, 2008, 16:38 »

Почему Вы защищаете невежество? Почему в своей защите используете нелояльный аргумент "сведение к гротеску"? Назвала ли я его "дурачком" или Вы?

"Злу должно быть, но горе тому, через кого оно приходит" (Евангелие)

Вы встаёте не на ту сторону.
Удаляйте.

[offtop]
действительно, чему тут удивляться? он же холоп, деревенщина...от бабушки ушёл, от медведя ушёл...
на печке недавно раскатывал - дурачок, одним словом...
[/offtop]

Перестаньте флудить.
Буду удалять.
Записан
lana
Гость
« Ответ #18 : Октябрь 07, 2008, 16:53 »

Объект экземпляра класса, который "сидит" в трее, наследован от QSystemTrayIcon.

class MyClass : public QSystemTrayIcon

MyClass "слушает" QTcpSocket, и когда возникает событие, выводит окно, которое оказывается неактивным.
Указать в качестве "парента" некого. Если только окно активного в данный момент приложения (не Qt), но это нужно искать его hWND, что, насколько я понимаю, проблематично.

Поэтому же бессмысленен raise(); а show() и exec() одинаково ничего не меняют.

1. Попробывать указать парент для диалога
....
Записан
ритт
Гость
« Ответ #19 : Октябрь 07, 2008, 17:03 »

Код:
connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconActivated(QSystemTrayIcon::ActivationReason)));
//...

void MainWindow::trayIconActivated(QSystemTrayIcon::ActivationReason reason)
{
switch(reason)
{
case QSystemTrayIcon::Trigger:
{
QDialog* f = new QDialog(this);
f->setWindowFlags(f->windowFlags() | Qt::WindowStaysOnTopHint);

f->show();
//f->setWindowState(windowState() & ~Qt::WindowMinimized);
f->raise();
f->activateWindow();
}
default:
break;
}
}

работает
Записан
spirit
Гость
« Ответ #20 : Октябрь 07, 2008, 17:07 »

тут фишка в другом как я понял. виджетов вообще нет.
в main создается предок QSystemTrayIcon.
а ваш пример, Константин, рабочий на 100%.
Записан
ритт
Гость
« Ответ #21 : Октябрь 07, 2008, 17:19 »

ну, не вопрос - диалог же всё-равно создаётся? пусть он создаётся в мэйне и сидит невидимым, а потом его оп - показали, оп - скрыли...проблема?
хотя, о чём это я? конечно же, надо искать текущее активное окно (если оно есть), получать его hWnd (это под иксами-то!) и назначить его парентом нового диалога, хотя диалог не примет ид в качестве родителя...ну, какая разница? не примет - и не надо...

klogshow
Записан
Tonal
Гость
« Ответ #22 : Октябрь 07, 2008, 20:27 »

HWND - это чисто виндовский прикол, в других оконных системах как уже сазали.
А указывать окно из другого приложения в качестве родителя - это конечно сильно! Веселый

Я бы попробывал запускать диалог через exec(), и дополнительно через QTimer::singleShot(0, ...) вызвать activateWindow(), или крутануть перед ним processEvents.

[off]
2 lana По поводу "зла" и "неведения".
Вы конечно же слышали, известную мудрость про уставы и монастыри?
Так вот, на большинстве программистских форумах, и этот не исключение, принято общение именно на Ты - этим как бы подчёркивается общность профессионалов.
Обращение на Вы, в таких форумах, обычно имеет место когда индивид показал себя заносчивым, неадекватным и непрофессиональным. Т.е. сообщество как бы отделяет его этим Вы.
Ну и второй вариант, когда появляется "истиный гуру". Например если здесь появится Страуструп, то думаю что обращаться к нему будут в основном на Вы. Улыбающийся
Но, т.к. здесь свободное общение, Вы, конечно, сами выбираете как к Вам будут относиться и обращаться. Улыбающийся
Записан
lana
Гость
« Ответ #23 : Октябрь 07, 2008, 21:12 »

Это кроссплатформенное приложение, которое используется, в основном, на Win-платформах, но "ковыряюсь" в нём я на линуксе. Если Вы хотели уязвить меня своим замечанием, то меня это мало волнует.

По поводу "зла" и "неведения".
Мне плевать на ваши "монастыри" и детсадовские правила. Я вижу в "тыкании" фамильярность и лицемерие, не более.

HWND - это чисто виндовский прикол, в других оконных системах как уже сазали.

[off]
2 lana По поводу "зла" и "неведения".
Записан
Tonal
Гость
« Ответ #24 : Октябрь 07, 2008, 22:12 »

Правильным является разрабатывать приложение в той системе, где приложение будет в основном использоваться - меньше будет в дальнейшем разнообразных неожиданностей. Улыбающийся

[off]
"Злу должно быть, но горе тому, через кого оно приходит" (Евангелие)
Вы встаёте не на ту сторону.
Правда же гармонирует с:
Мне плевать на ваши "монастыри" и детсадовские правила...
Нам в общем то тоже плевать на твои детские комплексы. Улыбающийся
[/off]
Записан
lana
Гость
« Ответ #25 : Октябрь 07, 2008, 22:23 »

"Кроссплатформеное" - означает, что приложение будет использоваться в разных "системах", и работать оно должно везде и одинаково.

Остальные слова - месть обиженного мальчика. Проще защищать своё невежество, уводя внимание от проблемы, вместо того, чтобы решить её.
Держиморда может закрыть ветку, не думаю, что здесь есть специалисты высокого уровня, способные ответить на вопрос.

Правильным является разрабатывать приложение в той системе, где приложение будет в основном использоваться - меньше будет в дальнейшем разнообразных неожиданностей. Улыбающийся
Записан
ритт
Гость
« Ответ #26 : Октябрь 07, 2008, 22:38 »

я хотел бы уточнить у столь просвящённой особы: каким образом в "тыкании" проявляется лицемерие? ну, фамильярность - хрен с ним - людям с завышенной самооценкой может быть неприятно, когда к ним обращаются на "ты" (к примеру, "Мы - Король"), а лицемерие-то?

мне, например, лицемерием видится то, что человек регистрируется в форуме, описывает довольно-таки тривиальную проблему, ожидает помощи со стороны социума (да, Пелевин)...но не слышит ответ, не воспринимает аргументы, даже мысли допустить не может о соственной неправоте...затем следует череда оскорблений и плевков в сторону этого-самого социума...


"Есть учения, которые дают несколько различных подходов к своему предмету. Одним – начинающим – они предлагают основы, более способным и любопытным – углубленную и детальную информацию, не уступающую научным исследованиям. Вы знали об этом? Прочтите, например, документацию по QT и согласитесь со мной, либо не согласитесь."
я извиняюсь за то, что несколько вольно адаптировал столь глубокую мысль под наши мирские суеты, но во всём существуют правила.
пусть на правила форума наплевать, пусть "устав нашего монастыря" будет посмешищем...пусть.
честное слово, нам от этого не станет хололднее или голоднее - примерно раз в пол-года здесь неизменно появляется некий Индивид, Король, Жёлтый робот, наконец, и практически в 100% это люди невежественные и в программировании примерно как свиньи в церкви...
сначала они угрожают, со временем притихают, а потом и вовсе пропадают неизвестно куда...а мы всё ещё тёплые, сытые и продолжаем общение...

счастливых поисков бОГА.
и просьба с такими настроениями здесь больше не писать!
Записан
ритт
Гость
« Ответ #27 : Октябрь 07, 2008, 22:39 »

"держиморда" принципиально пока не будет закрывать ветку.

решение было предоставлено ещё на предыдущей странице, но пелена самосозерцания не даёт этого увидеть.
прискорбно...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #28 : Октябрь 07, 2008, 23:18 »

Константин: Я так думаю, не стоит закрывать данную ветку, так как автор начнет кричать, что на форуме слишком самоуправные и тупые админы. Следует ее не только оставить, но и в правила внести пару выдержек отсюда. Улыбающийся

lana: Перед тем, как наезжать на человека в незнакомом обществе, нужно сначала освоиться в данном обществе. Как-то некрасиво наблюдать такой наезд на админа от какого-то новичка. Причем наезд был не оправданный.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #29 : Октябрь 08, 2008, 01:34 »

Не смог удержаца чтоб не отписаться.

Кратко про йусера lana могу сказать, что это либо ппц, либо особоутонченный троллинг.
Записан

Собираю информацию по крупицам
http://webhamster.ru
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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