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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: как сделать окно активным при открытии?  (Прочитано 8311 раз)
nvek
Гость
« : Февраль 02, 2017, 12:36 »

когда я делаю
Код:
aboutForm* tb = new aboutForm;
tb->setWindowModality(Qt::ApplicationModal);
tb->show();
у меня форма открывается, но она не активная (серая)
нехорошо
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Февраль 02, 2017, 12:38 »

setFocus() ?
Записан

Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


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


Просмотр профиля
« Ответ #2 : Февраль 02, 2017, 12:59 »

raise()
Записан

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 не волк, в лес не уйдёт
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #3 : Февраль 02, 2017, 16:21 »

activateWindow()
Записан
nvek
Гость
« Ответ #4 : Февраль 03, 2017, 07:26 »

не, не работает
Код:
aboutForm::aboutForm(QWidget *parent)
: QDialog(parent)
{
raise();
activateWindow();
        setWindowTitle(MAIN_WIN_TITLE);
Записан
Bepec
Гость
« Ответ #5 : Февраль 03, 2017, 08:55 »

Пока оно не выйдет из конструктора, ни одно из предложенных тут решений не сработает Веселый
Так что костыльный но рабочий вариант - QTimer::SingleShot(500, this, SLOT(activateWindow())).

Точнее пока не завершится конструктор окна как такового вообще нет. Оно даже размеров своих не знает. А вот после сработки конструктора - активируйте за милую душу Улыбающийся
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #6 : Февраль 03, 2017, 09:23 »

Пока оно не выйдет из конструктора, ни одно из предложенных тут решений не сработает Веселый
Так что костыльный но рабочий вариант - QTimer::SingleShot(500, this, SLOT(activateWindow())).

Точнее пока не завершится конструктор окна как такового вообще нет. Оно даже размеров своих не знает. А вот после сработки конструктора - активируйте за милую душу Улыбающийся
А можно событие показа перехватить и в нем активироваться.
Записан

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

Сообщений: 290


Просмотр профиля
« Ответ #7 : Февраль 03, 2017, 09:35 »

Только вот непонятно, зачем в конструкторе activateWindow делать. Почему нельзя до или после show, например?
Записан
nvek
Гость
« Ответ #8 : Февраль 03, 2017, 09:40 »

Код:
aboutForm::aboutForm(QWidget *parent)
: QDialog(parent)
{
        QTimer::singleShot(500, this, SLOT(activateWindow()));
if (false)
{
raise();
activateWindow();
}
так? но чет когда я жмякаю ф1 кнопка на форме не загорается, и надо на форму тыкнуть чтобы активировать форму. вот как то так
vs15 pro + Qt5
« Последнее редактирование: Февраль 03, 2017, 09:42 от nvek » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #9 : Февраль 03, 2017, 09:58 »

Неправильный подход. Положением и активностью должно не окно управлять, а тот, кто это окно вызывает. Покажи код вызова окна.
Записан

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

он в первом посте
Код:
aboutForm* tb = new aboutForm;
tb->setWindowModality(Qt::ApplicationModal);
tb->show();
« Последнее редактирование: Февраль 03, 2017, 10:07 от nvek » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #11 : Февраль 03, 2017, 10:36 »

tb->exec() сделай.
Записан

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

баг какойто  Непонимающий
я жмякаю ф1: окно вылезло(окно не активное)
если жмякать много много раз, оно открывается сколько угодно раз
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #13 : Февраль 04, 2017, 19:22 »

баг какойто  Непонимающий
если жмякать много много раз, оно открывается сколько угодно раз

а нечего на каждый вызов создавать окно Улыбающийся
в поле класса напишите окно и вызывайте когда нужно будет
или в функции на стеке создавать его и показывать через exec
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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