Название: вопрос по дочернему окну Отправлено: muaddib1981@mail.ru от Ноябрь 25, 2008, 11:46 Как скрыть заголовок дочернего окна? Название: Re: вопрос по дочернему окну Отправлено: Hort от Ноябрь 25, 2008, 11:53 Как скрыть заголовок дочернего окна? например такКод
Название: Re: вопрос по дочернему окну Отправлено: muaddib1981@mail.ru от Ноябрь 25, 2008, 12:09 Не получается:
Код
Причем если окно не дочернее, а виджет который прикрепляется на layout, то все работает, если окно дочернее появляется заголовок. Название: Re: вопрос по дочернему окну Отправлено: Hort от Ноябрь 25, 2008, 12:16 работать с окнами QMdiArea надо через класс QMdiSubWindow
метод addSubWindow() возвращает указатель на созданный QMdiSubWindow следовательно в твоем случае надо так: Код
Название: Re: вопрос по дочернему окну Отправлено: muaddib1981@mail.ru от Ноябрь 25, 2008, 12:26 Нет все равно, не работает. Может существует какой-нибудь другой способ, в обход setWindowFlags?
Название: Re: вопрос по дочернему окну Отправлено: Hort от Ноябрь 25, 2008, 12:34 Нет все равно, не работает. Может существует какой-нибудь другой способ, в обход setWindowFlags? а чем тебе не подходит обычное всплывающее окно? МидиАреа вообще-то предназначена какбы не совсем для этогоНазвание: Re: вопрос по дочернему окну Отправлено: muaddib1981@mail.ru от Ноябрь 25, 2008, 12:38 мне нужно, чтобы в окне были виджеты без заголовков. Перетаскивать мышью я их собираюсь ухватываясь не за заголовок а за сам виджет. Но чтобы виджеты не попадали за пределы окна. Т.е. мне нужно:
1) виджеты без заголовков 2) запретить возможность перетаскивания за пределы окна. Название: Re: вопрос по дочернему окну Отправлено: Hort от Ноябрь 25, 2008, 12:47 поробовалы только что у себя подобное
Код: mdiarea->addSubWindow(helpdialog,Qt::Popup)->setWindowFlags(Qt::Popup); Есть еще один вариант - поробуй сделать это через QWorkspace Бывает такое, что то что глючит на QMidiArea нормально работает в QWorkspace и наоборот. В своем проекте не буду проверять - прийдется сильно много переделывать. Название: Re: вопрос по дочернему окну Отправлено: BRE от Ноябрь 25, 2008, 12:56 Бывает такое, что то что глючит на QMidiArea нормально работает в QWorkspace и наоборот. В своем проекте не буду проверять - прийдется сильно много переделывать. Цитата из QAssistant по классу QWorkspace: Цитировать This class is deprecated. Use QMdiArea instead. QWorkspace могут убрать из Qt в любой момент.Название: Re: вопрос по дочернему окну Отправлено: muaddib1981@mail.ru от Ноябрь 25, 2008, 13:01 Код
//Пользуйся тэгом КОД для оформления исходного кода! Название: Re: вопрос по дочернему окну Отправлено: muaddib1981@mail.ru от Ноябрь 25, 2008, 13:03 Глючит, все равно. Окно просто не появляется. Если просто workspace->addWindow(helpdialog); то появляется, но с заголовком!
Название: Re: вопрос по дочернему окну Отправлено: spirit от Ноябрь 25, 2008, 13:15 Код enjoy! Название: Re: вопрос по дочернему окну Отправлено: Racheengel от Ноябрь 25, 2008, 14:57 По моему, надо еще Qt::FramelessWindowHint добавить:
Код: workspace->addWindow(new QWidget, Qt::Widget | Qt::CustomizeWindowHint | Qt::FramelessWindowHint); Название: Re: вопрос по дочернему окну Отправлено: spirit от Ноябрь 25, 2008, 14:59 По моему, надо еще Qt::FramelessWindowHint добавить: и без этого работает чудесно.Код: workspace->addWindow(new QWidget, Qt::Widget | Qt::CustomizeWindowHint | Qt::FramelessWindowHint); Название: Re: вопрос по дочернему окну Отправлено: spirit от Ноябрь 25, 2008, 16:03 ага, нельзя будет ресайзить виджет :)
Название: Re: вопрос по дочернему окну Отправлено: muaddib1981@mail.ru от Ноябрь 26, 2008, 09:22 Как теперь убрать синюю рамку, которая обрамляет окно?
Название: Re: вопрос по дочернему окну Отправлено: spirit от Ноябрь 26, 2008, 09:25 см.посты выше, а именно Racheengel
Цитировать По моему, надо еще Qt::FramelessWindowHint добавить: Qt::FramelessWindowHintCode: workspace->addWindow(new QWidget, Qt::Widget | Qt::CustomizeWindowHint | Qt::FramelessWindowHint); но если использовать этот флаг, то растягивать мышкой окно уже не получится. Название: Re: вопрос по дочернему окну Отправлено: muaddib1981@mail.ru от Ноябрь 26, 2008, 09:29 workspace->addWindow(new QWidget, Qt::Widget | Qt::CustomizeWindowHint | Qt::FramelessWindowHint); не работает. Скриншот приведенный выше взят уже с Qt::FramelessWindowHint.
Название: Re: вопрос по дочернему окну Отправлено: spirit от Ноябрь 26, 2008, 09:32 возьми поиграйся с примером QTDIR/examples/widgets/windowflags/.
и про Qt::WindowFlags почитай. Название: Re: вопрос по дочернему окну Отправлено: muaddib1981@mail.ru от Ноябрь 26, 2008, 10:08 QTDIR/examples/widgets/windowflags/ там не дочерние окна, а просто виджет. Там все работает, и что казалось бы должно работать и в дочерних окнах, но не работает. Просто по виджетам у меня вопросов нет.
Название: Re: вопрос по дочернему окну Отправлено: Racheengel от Ноябрь 26, 2008, 11:22 Во-во-во, я замечал такой баг в QWorkspace - флагами рамку вокруг окна убрать не получается.
Честно говоря, в свое время проблему так и не смогли решить, тролям зарепортили, но внятного ответа так и не получили. В QMdiArea помоему этого бага уже нет, но там какая то другая лажа оказалась - то ли мышой окна не тягались, то ли еще что то , не помню (давно проект делали). Название: Re: вопрос по дочернему окну Отправлено: muaddib1981@mail.ru от Ноябрь 26, 2008, 15:06 там лажа заключается в том, что в моем случае нельзя убрать заголовок окна при помощи
mdiarea->addSubWindow(new QWidget, Qt::Widget | Qt::CustomizeWindowHint | Qt::FramelessWindowHint); где mdiarea это QMdiArea *mdiarea; Приходится пользоваться устаревшим QWorkspace. Название: Re: вопрос по дочернему окну Отправлено: muaddib1981@mail.ru от Ноябрь 28, 2008, 10:43 Добавил в класс THelpDialog макрос Q_OBJECT, чтобы определять нажатие кнопки
Код
helpdialog, являясь дочерним окном стал прозрачным, глюки какие-то. Причем QPushButton и QLabel которые на этом виджете, нормальные, не прозрачные. helpdialog->setWindowOpacity(1); не работает. Этот код: Код
тоже не работает. Как вернуть виджету прозрачность? //Повторяю ещё раз! Пользуйся тэгом КОД для оформления исходного кода! Название: Re: вопрос по дочернему окну Отправлено: muaddib1981@mail.ru от Декабрь 02, 2008, 14:41 С дочерним окном все решено. Можно использовать свойство setParent, для создания дочернего окна!
Код:
никакой обрамляющей рамки при этом нет. Название: Re: вопрос по дочернему окну Отправлено: spirit от Декабрь 02, 2008, 15:17 дык, надо ж было сразу сказать, что вам именно нужно.
ЗЫ. парент в конструктор обычно передают. |