Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Qt class QMainWindow


Автор: Artiom 19.2.2005, 19:48
Как в классе - потомке от QMainWindow убрать window caption и запретить любые перемещения и изменение размеров виджета? Под window caption я подразумеваю панельку вверху окна, где пишется название приложения, помещены кнопки "свернуть", "развернуть", "закрыть".

Offtop!!! Может кто знает хороший форум по Qt? Я бы просто почитал всякого. А ответы на свои вопросы можно и сюда постить в целях развития темы.

Автор: Artiom 20.2.2005, 15:34
Я что, не туда запостил или никто не в теме?

Автор: S.A.P. 20.2.2005, 16:16
Artiom смотри метод setWFlags. Еще флаги в конструкторе можно задать.

Еще можешь глянуть пример toplevel. Там можно со стилями поиграть. Если его нет, я тебе пришлю.

ЗЫ: давайте обсуждать QT на Винграде smile .

Автор: Artiom 20.2.2005, 23:56
Цитата(Perchilla @ 20.2.2005, 15:16)
Еще можешь глянуть пример toplevel. Там можно со стилями поиграть. Если его нет, я тебе пришлю.

У меня Qt только на работе - дома триал истек, линукс не ставил. Посмотрю, попробую.

Автор: Artiom 21.2.2005, 19:27
Что-то setWFlags не дает видимых изменений. писал так
Код

WFlag ff = WStyle_SysMenu | WStyle_Title;
clearWFlag(ff); // я так понимаю должен установить значение флагов в 0?

Не помогает.
З.Ы. Пишу по памяти, синтаксис может не тот, но в оригинале компилер не ругался.

Автор: S.A.P. 21.2.2005, 22:13
Посмотри пример toplevel, там такое было. Я сейчас уже не помню...

Автор: Artiom 22.2.2005, 17:35
Ухожу в монастырь. Нужные флаги очищаются, но на внешний вид приложения это никак не отражается.
З.Ы. toplevel не помогает

Автор: Artiom 24.2.2005, 19:21
Решение просто. Коструктор класса-наследника от QMainWindow выглядит так:
Код

MyWindow (QWidget *parent = 0, const char* name=0, WFlags f)

поэтому просто нужно передавть нужные флаги в конструктор
Код

Qt::WFlags = Qt::WStyle_Customize | Qt::WStyle_NoBorder;
 MyWindow X(0,0,f);

Почему явно поменять флаги внутри конструктора я не понял. Так или иначе, но проблема решена.

Автор: S.A.P. 24.2.2005, 19:31
Цитата(Perchilla @ 20.2.2005, 16:16)
Еще флаги в конструкторе можно задать.

smile

Автор: Coocky 24.2.2005, 19:36
Artiom
Цитата
Почему явно поменять флаги внутри конструктора я не понял

А для чего нужен конструктор?Для инициализации полей при создании обьекта.Видимо при создании окна разработчики прописывают стиль через флаг,но изменить это потом уже нельзя,поэтому и через конструктор,что б один раз...

Автор: Artiom 24.2.2005, 22:16
Цитата
но изменить это потом уже нельзя,поэтому и через конструктор,что б один раз...

А зачем тогда функции setWFlags, clearWFlagf и т.д.?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)