Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: enola от Август 21, 2006, 17:33



Название: GUI в Qt 4.1.4
Отправлено: enola от Август 21, 2006, 17:33
Есть пара вопросов по реализации "своего" интерфейса:
[list=1]
  • Как лучше сделать форму не стандартного размера?
  • То же самое с кнопками?
  • Есть ли какой способ реализации выше написанного, чтобы в дезайнере (а еще лучше в интеграторе под MS VS 2005) все данное на экране отображалось, т.е. и форма и кнопки не стандартные?
  • [/list:o]


Название: GUI в Qt 4.1.4
Отправлено: SLK от Август 21, 2006, 18:07
Наверно в целом надо тщательно курить QWidget  .... а для нестандартного размера\формы курить QWidget::setGeometry() и QWidget::setMask()

3. Можно, но для своего нестандартного элемента интерфейса нужно делать свой нестандартный плюгин к дизайнеру, иначе никак.


Название: Re: GUI в Qt 4.1.4
Отправлено: SLiDER от Август 21, 2006, 20:10
Цитата: "enola"
Есть пара вопросов по реализации "своего" интерфейса:
[list=1]
  • Как лучше сделать форму не стандартного размера?
  • То же самое с кнопками?
  • Есть ли какой способ реализации выше написанного, чтобы в дезайнере (а еще лучше в интеграторе под MS VS 2005) все данное на экране отображалось, т.е. и форма и кнопки не стандартные?
  • [/list:o]


Может я, конечно, идиот, но объясните мне, пожалуйста, что такое кнопки или форма НЕ СТАНДАРТНОГО размера  :!:  :!:  :!:  :?:  :?:  :?:


Название: Re: GUI в Qt 4.1.4
Отправлено: enola от Август 22, 2006, 11:08
Цитата: "SLiDER"

...я, конечно, идиот...

мне понравилось  :D
Помоги советом, а не прикапывайся к словам, обидеть не хочу, задеть тем более. Стандартные, в моем понимании, это те, что представлены на панели дизайнера, серенькие такие.


Название: GUI в Qt 4.1.4
Отправлено: Вудруф от Август 22, 2006, 11:24
Так, я тоже не догоняю. Ключевая фраза: нестандартного РАЗМЕРА.


Название: GUI в Qt 4.1.4
Отправлено: enola от Август 22, 2006, 11:40
Народ ну вы что, в самом деле, хотя...
Вот когда, для примера, кладешь на форму кнопку с панели дизайнера, какого она размера?! Вот он для нее стандартный, а скажем круглая кнопка это не стандартный размер!


Название: GUI в Qt 4.1.4
Отправлено: SLK от Август 22, 2006, 12:01
Цитата: "enola"
Народ ну вы что, в самом деле, хотя...
Вот когда, для примера, кладешь на форму кнопку с панели дизайнера, какого она размера?! Вот он для нее стандартный, а скажем круглая кнопка это не стандартный размер!


Это не стандартная форма :) ... размар можно растянуть и для стандартной кнопки.
Для нестандартной формы виджета (круглой, овальной, треугольной, какой угодно :) )   нужно использовать QWidget::setMask()


Название: GUI в Qt 4.1.4
Отправлено: enola от Август 22, 2006, 12:05
Тьфу ты, не размер естественно, сорри, форма объекта!!!
Вот ступил.
А махонького примерчика случаем нет, я иммею ввиду setMask()?


Название: GUI в Qt 4.1.4
Отправлено: SLK от Август 22, 2006, 12:13
В поставке QT4 есть пример круглой формы QTDIR\examples\widgets\shapedclock
и описание этого примера в документации .... QTDIR\doc\html\widgets-shapedclock.html


Название: GUI в Qt 4.1.4
Отправлено: enola от Август 22, 2006, 12:32
Дя я этот пример видел.
А с кнопками тем же способом разбираться?


Название: GUI в Qt 4.1.4
Отправлено: SLK от Август 22, 2006, 13:03
По идее да, так как QPushButton наследник QWidget.
Теоритически, для своей нестандартной кнопки лучше будет наследовать свой класс от QAbstractButton и как минимум писать свои paintEvent и resizeEvent где эта кнопка(или что там) будет рисоваться и обрезаться в соответствии с заданым setMask()


Название: GUI в Qt 4.1.4
Отправлено: enola от Август 22, 2006, 13:25
А примеры есть?


Название: GUI в Qt 4.1.4
Отправлено: SLK от Август 22, 2006, 19:45
Примеров нет таких ... разве что в исходниках самого QT можно посмотреть QPushButton.cpp (наследуется от QAbstractButton).
Нужно делать всё так же, как при наследовании от QWidget (эти примеры есть) просто у QAbstractButton уже есть в наличии все нужные для кнопок свойства, слоты и сигналы.


Название: GUI в Qt 4.1.4
Отправлено: enola от Август 23, 2006, 07:48
Спасибо.