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