crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Как создать квадратную кнопку?, нубский вопрос
VitAl2013
  опции профиля:
сообщение 20.1.2011, 10:46
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 3.1.2011
Пользователь №: 2321

Спасибо сказали: 1 раз(а)




Репутация:   0  


Как в дизайнере создать кнопку которая бы сохраняла свою квадратную форму при растягивании? Если можно то пример сразу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 20.1.2011, 11:13
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(VitAl2013 @ 20.1.2011, 10:46) *
Как в дизайнере создать кнопку которая бы сохраняла свою квадратную форму при растягивании? Если можно то пример сразу.
к сожалению ни как. Этого и в коде не так просто добиться :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 20.1.2011, 12:45
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


в дизайнере никак. А вообще, нужно наследоваться от кнопки и переопределять QWidget::heightForWidth

Еще думаю можно поставить eventFilter, ловить когда будет ресайз, и ставить кнопке setFixedSize(...) или setGeometry(...)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 20.1.2011, 13:00
Сообщение #4


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Rocky, говоришь ты все правильно, вот только в реальности по нормальному решить эту задачу мне так и не удалось. Компоновщики не правильно реагируют на подобные виджеты. Единственный путь который я здесь вижу, это создавать собственный компановщик
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 20.1.2011, 13:28
Сообщение #5


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Кстати да, припоминаю.. Как-то нужно было сделать по 8 квадратных виджетов справа и слева от главной формы. А по середине еще много всяких виджетов было.... Затык был на несколько дней, потому что от ресайза одних виджетов, зависело положение других... И ресайз/лэйаут происходил черте как.... Каким-то образом я сделал чтоб работало как надо, но код жутковатый был... да =)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
VitAl2013
  опции профиля:
сообщение 20.1.2011, 14:00
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 3.1.2011
Пользователь №: 2321

Спасибо сказали: 1 раз(а)




Репутация:   0  


А нельзя ли сделать свой дочерний виджет-кнопку у которой прописать "высота = ширине" или это всё равно приведёт к неверной реакции компановщиков?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 20.1.2011, 14:10
Сообщение #7


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


VitAl2013, проблема не в том что бы сделать кнопку квадратной. Это запросто (но не в дизайнере (хотя и там тоже можно, но только фиксированного размера)). Проблемы возникнут при ресайзе такой формы. Между виджетами будут появляться большие зазоры, что очень портит интерфейс. Если это не так страшно, то делай как сказал Rocky,
Цитата(Rocky @ 20.1.2011, 12:45) *
нужно наследоваться от кнопки и переопределять QWidget::heightForWidth
и выставляй там height = width
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
VitAl2013
  опции профиля:
сообщение 20.1.2011, 14:39
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 3.1.2011
Пользователь №: 2321

Спасибо сказали: 1 раз(а)




Репутация:   0  


Хорошо буду рыть. Но я нуб (чайник) так что буду делать это долго. Хотелось бы пример готовый.
Наследоваться - это как? Создавать объект наследник класса?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 20.1.2011, 14:47
Сообщение #9


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


да.

Но лучче почитать хотя бы что-нибудь о С++ в таком случае. Что такое классы, наследование и пр.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
VitAl2013
  опции профиля:
сообщение 20.1.2011, 16:50
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 3.1.2011
Пользователь №: 2321

Спасибо сказали: 1 раз(а)




Репутация:   0  


Что нибудь я читал и представления имею... Практики мало. Тем более в контексте Qt, что это значит и как реализуется я не понимаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.4.2021, 19:16