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

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

Страниц: 1 [2] 3 4 5   Вниз
  Печать  
Автор Тема: указать родителя побочным окнам[РЕШЕНО]  (Прочитано 30452 раз)
Zeka13
Гость
« Ответ #15 : Март 20, 2012, 21:15 »

я ничего не понял почти =)

а можно пожалуйста на примере показать, который я скинул?

Реально быстрее же получится и конструктивнее
Записан
V1KT0P
Гость
« Ответ #16 : Март 20, 2012, 21:20 »

я и говорю, что с его ответом разобраться не смог!
И предлагаешь нам прочитать твои мысли и самим понять что ты не понял?
Если окну указать родителя другое окно то оно тупо не отображается. Даже не знаю почему. И если никто не ответит, то вот костыль:
Добавляем в главное окно:
Код
C++ (Qt)
   void closeEvent(QCloseEvent *event);
 
signals:
   void windowClosed();
Реализация:
Код
C++ (Qt)
void MainWindow::closeEvent(QCloseEvent *event)
{
   emit windowClosed();
}
 
void MainWindow::slot1()
{
   Form *bufka = new Form;
   connect(this, SIGNAL(windowClosed()), bufka, SLOT(close()));
   bufka->show();
}
Не очень хорошо, но думаю пойдет.

А второй вопрос я просто не понял.
Записан
mutineer
Гость
« Ответ #17 : Март 20, 2012, 21:26 »

Если окну указать родителя другое окно то оно тупо не отображается. Даже не знаю почему. И если никто не ответит, то вот костыль:

А где создается второе окно? чтобы окно отобразилось, надо ему или его родителю вызвать show()
Записан
V1KT0P
Гость
« Ответ #18 : Март 20, 2012, 21:30 »

Если окну указать родителя другое окно то оно тупо не отображается. Даже не знаю почему. И если никто не ответит, то вот костыль:

А где создается второе окно? чтобы окно отобразилось, надо ему или его родителю вызвать show()
Скачай проект из первого сообщения и сделай закрытие через указание родителя. Просто у меня почему-то так не получается. и show() конечно-же делается.
Записан
mutineer
Гость
« Ответ #19 : Март 20, 2012, 21:32 »

Если окну указать родителя другое окно то оно тупо не отображается. Даже не знаю почему. И если никто не ответит, то вот костыль:

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

Видимо потому, что если виджету указать родителя, то он не будет отдельным окном, а будет виджетом на этом родителе
« Последнее редактирование: Март 20, 2012, 21:34 от mutineer » Записан
mutineer
Гость
« Ответ #20 : Март 20, 2012, 21:35 »

Zeka13: видимо тебе придется самому центрировать эти окна и уничтожать их, когда закрывается главное окно. Последний пункт (про фокус) я не понял
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #21 : Март 20, 2012, 21:57 »

спасибо
блин, а с главным вопросом то чего?
Код
C++ (Qt)
Form z(this);
только, как уже сказали, надо через указатель и центрировать самому. а фокус дочерние окна и так получают при появлении.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
mutineer
Гость
« Ответ #22 : Март 20, 2012, 22:06 »

спасибо
блин, а с главным вопросом то чего?
Код
C++ (Qt)
Form z(this);
только, как уже сказали, надо через указатель и центрировать самому. а фокус дочерние окна и так получают при появлении.

Разве при указании парента виджет откроется как отдельное окно?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #23 : Март 20, 2012, 22:27 »

если он наследник QWidget, то нет, если же QDialog, то да
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Zeka13
Гость
« Ответ #24 : Март 21, 2012, 10:05 »

так а если от кнопки наследовать?

Я же не спросил, как указать родителем "окно", а как расположить новое окно относительно главного и передать на него фокус + чтобы оно жило, только если главное живёт, так же точно можно без костылей!
Записан
V1KT0P
Гость
« Ответ #25 : Март 21, 2012, 10:13 »

так а если от кнопки наследовать?

Я же не спросил, как указать родителем "окно", а как расположить новое окно относительно главного и передать на него фокус + чтобы оно жило, только если главное живёт, так же точно можно без костылей!
Если нужен именно QWidget то делай как я выше написал, если QWidget не обязателен и хочешь "правильно" то наследуй Form от QDialog, и при создании укажи родителя:
Код:
Form *bufka = new Form(this);
Насчет второго вопроса: что значит относительно? И в том примере что я привел и в этом окно появляется точно с координатами текущего окна. Также в обоих примерах окна живут пока  живет главное, также после отображение окна оно получает фокус.
Так вот вопрос: что не так?
Записан
Bepec
Гость
« Ответ #26 : Март 21, 2012, 10:18 »

to V1KT0P:
Что бы окно с родителем отобразилось отдельным окошком, необходимо просто ему в контрукторе прописать
Код:
setWindowsFlag(Qt::Window);
Подмигивающий
Записан
V1KT0P
Гость
« Ответ #27 : Март 21, 2012, 10:22 »

to V1KT0P:
Что бы окно с родителем отобразилось отдельным окошком, необходимо просто ему в контрукторе прописать
Код:
setWindowsFlag(Qt::Window);
Подмигивающий
Оу, спасибо. Пошел патчить свою прогу... =)

добавлено:
to Bepec
А как сделать чтоб отдельная кнопка на панели задач оставалась?
« Последнее редактирование: Март 21, 2012, 10:36 от V1KT0P » Записан
Zeka13
Гость
« Ответ #28 : Март 21, 2012, 11:18 »

Цитировать
а можно пожалуйста на примере показать, который я скинул?
Записан
V1KT0P
Гость
« Ответ #29 : Март 21, 2012, 11:21 »

Цитировать
а можно пожалуйста на примере показать, который я скинул?
В конструкторе Form добавляешь:
Код
C++ (Qt)
setWindowFlags(Qt::Window);
И строку:
Код
C++ (Qt)
Form *bufka = new Form;
Меняешь на:
Код
C++ (Qt)
Form *bufka = new Form(this);
Записан
Страниц: 1 [2] 3 4 5   Вверх
  Печать  
 
Перейти в:  


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