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

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

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

и всё таки, что описательно делает
Код
C++ (Qt)
Values *bufka = new Values(this);
?

Передает в конструктор класса Values this параметром
Записан
Bepec
Гость
« Ответ #46 : Март 21, 2012, 12:58 »

Код:
Values *bufka
Оно создаёт указатель bufka типа Values.

Далее:
Код:
Values *bufka = new Values(this);
Создаёт новый объект(new) типа Values, вызывая его конструктор. В качестве параметров в конструктор передаётся указатель на текущий виджет (this).
Записан
Zeka13
Гость
« Ответ #47 : Март 21, 2012, 12:59 »

это то понятно, я же не совсем дауном решил что-то типо: открою ко я Qt Creator и буду просить на форумах писать за меня код =)
Я правда пытаюсь разобраться и c++ более или менее знаю.

Просто передавая параметр this, который является в данном случае указателем на MainWindow, что именно происходит?
Записан
V1KT0P
Гость
« Ответ #48 : Март 21, 2012, 13:00 »

и всё таки, что описательно делает
Код
C++ (Qt)
Values *bufka = new Values(this);
?
Если Values наследуется от QObject или от другого класса который тоже наследуется от него, то если в конструктор передать указатель на класс который либо является QObject либо наследуется от него, то он становится "ребенком" родителя. То что передается называется родителем. Это нужно для того чтобы после удаления родителя он сам удалил всех "детей" которые ему принадлежат. То-есть не нужно вручную удалять. Где-то даже статья про это была но я уже не помню.
Записан
Zeka13
Гость
« Ответ #49 : Март 21, 2012, 13:04 »

спасибо большое, это именно то, что я хотел услышать!

И наконец про Qt::WindowFlags. Эта функция кидает наше окно в 0,0 а мы потом двигаем это окно туда, куда нам нужно?
Записан
V1KT0P
Гость
« Ответ #50 : Март 21, 2012, 13:07 »

спасибо большое, это именно то, что я хотел услышать!

И наконец про Qt::WindowFlags. Эта функция кидает наше окно в 0,0 а мы потом двигаем это окно туда, куда нам нужно?
Если ты про:
Код
C++ (Qt)
setWindowFlags(Qt::Window);
То setWindowFlags - это функция которая устанавливает флаги.
Qt::Window - флаг небходимый для того чтоб виджет считался отдельным окном когда ему назначат родителя, иначе он добавится к родителю.
Записан
Zeka13
Гость
« Ответ #51 : Март 21, 2012, 13:09 »

я сейчас убрал эту функцию и ничего не изменилось, так что так и не понимаю, зачем это нужно
Записан
V1KT0P
Гость
« Ответ #52 : Март 21, 2012, 13:12 »

я сейчас убрал эту функцию и ничего не изменилось, так что так и не понимаю, зачем это нужно
Если ты ее убрал из конструктора виджета окна и при создании указал родителя окну то отдельное окно не появится, виджет просто добавится к родителю.
Записан
Zeka13
Гость
« Ответ #53 : Март 21, 2012, 13:20 »

Цитировать
виджет просто добавится к родителю
не очень понимаю
Цитировать
отдельное окно не появится
В каком смысле?  У меня всё появилось
Записан
mutineer
Гость
« Ответ #54 : Март 21, 2012, 13:21 »

Цитировать
виджет просто добавится к родителю
не очень понимаю
Цитировать
отдельное окно не появится
В каком смысле?  У меня всё появилось

покажи куски кода где ты создаешь окно и где выставлял setWindowFlags
Записан
Bepec
Гость
« Ответ #55 : Март 21, 2012, 13:22 »

Зека. Ты про родителя слышал? Ну не тормозиии....

Если виджету задан родитель, то виджет будет отображаться НА родителе.
Если виджету НЕ задан родитель, или присутствует setWindowFlags(Qt::Window), тогда он становится отдельным окном.

PS хочешь нормальных ответов? Задавай нормальные вопросы, учись Подмигивающий
Записан
Zeka13
Гость
« Ответ #56 : Март 21, 2012, 13:26 »

что значит
Цитировать
отображаться НА родителе
?
и чем отличается тогда "задать родителя" от присутствия  setWindowFlags(Qt::Window)?

mutineer, секунду
Записан
Zeka13
Гость
« Ответ #57 : Март 21, 2012, 13:28 »

сейчас попробовал в минимальном проекте без setWindowFlags(Qt::Window); и окна не появилось, сейчас разберусь с главным проектом
Записан
mutineer
Гость
« Ответ #58 : Март 21, 2012, 13:30 »

что значит
Цитировать
отображаться НА родителе
?
и чем отличается тогда "задать родителя" от присутствия  setWindowFlags(Qt::Window)?

http://doc.crossplatform.ru/qt/4.7.x/html-qt/objecttrees.html
Записан
Zeka13
Гость
« Ответ #59 : Март 21, 2012, 13:42 »

а там точно есть ответ на мой вопрос, а то я прочёл уже 2 раза, не нашёл на него ответа?

Вот пробный проект, окно(Qdialog) создаётся без функции
Код
C++ (Qt)
setWindowFlags(Qt::Window);
Записан
Страниц: 1 2 3 [4] 5   Вверх
  Печать  
 
Перейти в:  


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