QHBoxLayout и дочерние виджеты, Растянуть дочение виджеты на весь Layout |
Здравствуйте, гость ( Вход | Регистрация )
QHBoxLayout и дочерние виджеты, Растянуть дочение виджеты на весь Layout |
kunashir |
11.3.2011, 11:08
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 10.3.2011 Пользователь №: 2485 Спасибо сказали: 0 раз(а) Репутация: 0 |
Создал класс наследника от Layout: он содержит кнопку (PushButton) и поле ввода (LineEdit), а также QHBoxLayout, на котором предыдущие виджеты и располагаются.
Так проблема в том что это дочерние виджеты не занимаю все область Layout'а. А так как класс собираюсь использовать в качестве делегата - в ячейки QTableView это выглядит не очень... Вот собственно вопрос - как заставить внутренние виджеты занимать все доступную область. |
|
|
silver47 |
11.3.2011, 12:02
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Создал класс наследника от Layout: он содержит кнопку (PushButton) и поле ввода (LineEdit), а также QHBoxLayout, на котором предыдущие виджеты и располагаются. Так проблема в том что это дочерние виджеты не занимаю все область Layout'а. А так как класс собираюсь использовать в качестве делегата - в ячейки QTableView это выглядит не очень... Вот собственно вопрос - как заставить внутренние виджеты занимать все доступную область. гм. А зачем класс наследовать от Layout? В конце-концов он будет виджетом, может лучше отнаследовать от виджета? Собсна:
Все нормально работает и растягивается на весь размер виджета. P.S.: Попробуй через запятую указать коэфициент изменения размеров, по-умолчанию он 0, поставь по 1ке. Сообщение отредактировал silver47 - 11.3.2011, 12:06 |
|
|
kunashir |
11.3.2011, 12:51
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 10.3.2011 Пользователь №: 2485 Спасибо сказали: 0 раз(а) Репутация: 0 |
Все нормально работает и растягивается на весь размер виджета. P.S.: Попробуй через запятую указать коэфициент изменения размеров, по-умолчанию он 0, поставь по 1ке. Спасибо, что оперативно ответили. Я уже решил таким способом:
Теперь у меня другой вопрос: Когда этот класс использую как делегат, то когда нажимаешь на кнопку редактирование прекращается и делегат закрывается, а вот если сперва щелкнуть по полю редактирования, то потом уже можно на кнопку нажимать. Как сделать чтобы можно было сразу клацать по кнопке? |
|
|
silver47 |
11.3.2011, 14:14
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Теперь у меня другой вопрос: Когда этот класс использую как делегат, то когда нажимаешь на кнопку редактирование прекращается и делегат закрывается, а вот если сперва щелкнуть по полю редактирования, то потом уже можно на кнопку нажимать. Как сделать чтобы можно было сразу клацать по кнопке? А кнопка то что делает? Если требе сначала щёлкнуть по полю ввода, а потом тыкать кнопку, поставьте курсор на поле ввода в конструкторе класса. lineEdit->setFocus(), но тогда зачем всеже кнопка |
|
|
kunashir |
11.3.2011, 14:17
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 10.3.2011 Пользователь №: 2485 Спасибо сказали: 0 раз(а) Репутация: 0 |
А кнопка то что делает? Если требе сначала щёлкнуть по полю ввода, а потом тыкать кнопку, поставьте курсор на поле ввода в конструкторе класса. lineEdit->setFocus(), но тогда зачем всеже кнопка Как раз редактировать поле ввода не надо - в идеале можно только посмотреть что там есть, а кнопка нужна чтобы вызвать другую форму (это хочу использовать для работы с внешними ключами таблицы БД - т.е. по кнопки доступ к таблице ключа). |
|
|
silver47 |
11.3.2011, 14:25
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Попробуй в конструкоре класа делегата
lineEdit->setReadOnly(true); button->setFocus(); Вроде делегат должен отрисовываться нормально. |
|
|
kunashir |
11.3.2011, 14:29
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 10.3.2011 Пользователь №: 2485 Спасибо сказали: 0 раз(а) Репутация: 0 |
Попробуй в конструкоре класа делегата lineEdit->setReadOnly(true); button->setFocus(); Вроде делегат должен отрисовываться нормально. Он то отрисовывается нормально, а вот нажать на кнопку можно только после того как ввод получить LineEdit. Такое впечатление, что любое клик не по полю ввод расценивается как конец редактирование - закрытие делегата. Но когда в качестве делегата используется SpinBox, то можно сразу по кнопкам тыкать. |
|
|
silver47 |
11.3.2011, 14:32
Сообщение
#8
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Ошибка в делегате. Закройте эту тему и создайте новую в Моделях\Представляниях, но там без полного текста класса делегата делать нечего .
Необходимо по крайней мере переопределить методы: createEditor setEditorData setModelData updateEditorGeometry paint Сообщение отредактировал silver47 - 11.3.2011, 14:35 |
|
|
Текстовая версия | Сейчас: 2.1.2025, 22:29 |