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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Кнопка "развернуть"  (Прочитано 13919 раз)
gosen
Гость
« : Февраль 14, 2010, 03:10 »

Здравствуйте) Цель: сделать так чтобы у главного окна были только кнопки "Закрыть" и "Свернуть"... Почитал про флаги и т п.. Написал вот это:
mainWin.setWindowFlags(Qt::Window | Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint);

Но кнопка "развернуть" всё равно есть) Что делаю не так? Как решить проблему? Непонимающий
Записан
shirushizo
Гость
« Ответ #1 : Февраль 14, 2010, 06:25 »

Qt::WindowMinimizeButtonHint : Adds a minimize button. On some platforms this implies Qt::WindowSystemMenuHint for it to work.
WinXP, как я понимаю, это и есть одна из этих "некоторых" платформ.Т.е. кнопка "развернуть" будет отрисована, но если не указан Qt::WindowMaximizeButtonHint, будет недоступна.
Можно использовать Qt::WindowTitleHint - будет только "закрыть".
Записан
gosen
Гость
« Ответ #2 : Февраль 14, 2010, 11:27 »

Ну во первых, делал много манипуляций с флагами и "развернуть" всегда была)) А во вторых почему ты решил что у меня WinXP? ОС: Ubuntu 9.10))
На счёт Qt::WindowTitleHint спс, попробую=)
Записан
gosen
Гость
« Ответ #3 : Февраль 14, 2010, 12:50 »

Когда ставлю Qt::WindowTitleHint всё равно есть "развернуть"...
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Февраль 14, 2010, 14:28 »

gosen, если ты для виджета-окна установишь фиксированный размер, то эта кнопка автоматически станет не активной.
Записан

Юра.
gosen
Гость
« Ответ #5 : Февраль 14, 2010, 16:24 »

lit-uriy, спасибо большое)) Это то что нужно=)
Записан
shirushizo
Гость
« Ответ #6 : Февраль 18, 2010, 12:04 »

Ну во первых, делал много манипуляций с флагами и "развернуть" всегда была)) А во вторых почему ты решил что у меня WinXP? ОС: Ubuntu 9.10))
На счёт Qt::WindowTitleHint спс, попробую=)
Ну насчет ОС я не утверждал, я просто у себя проверил. А эти флаги у меня делали кнопку неактивной.
Записан
waster
Гость
« Ответ #7 : Март 08, 2010, 18:05 »

Ну во первых, делал много манипуляций с флагами и "развернуть" всегда была)) А во вторых почему ты решил что у меня WinXP? ОС: Ubuntu 9.10))

В морг. Поменяешь стиль и вся программа станет выглядеть шиворот-навыворот!

Поставь ради эксперимента крупные шрифты и тему с чёрным фоном для дальтоников...
Записан
toggetit
Гость
« Ответ #8 : Март 22, 2011, 11:15 »

Добрый день!
Может немного не по теме, но не нашёл более подходящей ветки, поэтому пишу сюда.
Я тут реализовывал перехват нажатия кнопки "свернуть" с целью не минимизации окна, а его полного сокрытия "hide()". Дык вот отсюда вопрос - когда я обратно вызываю show() из другого места, окно становится видимым, но свёрнутым. Нет ли способа (метода) принудительного разворачивания окна? Я вот что-то не нашёл.
Заранее спасибо!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #9 : Март 22, 2011, 11:19 »

Код
C++ (Qt)
void MainWindow::showAndActivate ()
{
setWindowState (windowState() & ~Qt::WindowMinimized | Qt::WindowActive);
show ();
activateWindow();
}
 

Вот так работает.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Sahab
Гость
« Ответ #10 : Март 22, 2011, 11:43 »

activateWindow()
Цитировать
On Windows, if you are calling this when the application is not currently the active one then it will not make it the active window. It will change the color of the taskbar entry to indicate that the window has changed in some way. This is because Microsoft does not allow an application to interrupt what the user is currently doing in another application.
причем вызываю для венды 2 раза ... т.к. только после этого моргает постоянно, иначе единоразово
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #11 : Март 22, 2011, 11:49 »

Просто activateWindow не всегда срабатывает.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Sahab
Гость
« Ответ #12 : Март 22, 2011, 13:46 »

что значит не всегда?.... рулетко?
Если вызвать один раз моргает один раз, ВСЕГДА. Если два раза - постоянно
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #13 : Март 22, 2011, 13:49 »

Мне не мигание нужно было, а чтобы окно встало на первый план.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Sahab
Гость
« Ответ #14 : Март 22, 2011, 13:50 »

activateWindow()
Цитировать
On Windows, if you are calling this when the application is not currently the active one then it will not make it the active window. It will change the color of the taskbar entry to indicate that the window has changed in some way. This is because Microsoft does not allow an application to interrupt what the user is currently doing in another application.
Код:
void MainWindow::showAndActivate ()
{
setWindowState (windowState() & ~Qt::WindowMinimized | Qt::WindowActive);
show ();
activateWindow();
}
 
так тоже не "встает на первый план" Win7/4.7.2
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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