Russian Qt Forum
Июнь 16, 2024, 05:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Вопрос про делегата  (Прочитано 12686 раз)
trot
Гость
« Ответ #15 : Май 02, 2012, 16:04 »

http://www.prog.org.ru/topic_11705_0.html
Записан
Bepec
Гость
« Ответ #16 : Май 02, 2012, 23:16 »

Насколько я понял, прочитав последнюю реплику, проблема была решена? Оо.

В чём проблем?
Записан
trot
Гость
« Ответ #17 : Май 03, 2012, 09:55 »

Казалось бы разобрался. Едитор разрушается когда уходит фокус. На простом примере так и работает.

Но у меня в программе фокус установлен на другом элементе, а едитор не разрушается. Не понимаю почему. И мне его приходиться разрушает принудительно.
Записан
Bepec
Гость
« Ответ #18 : Май 03, 2012, 10:20 »

Значит надо выкладывать ТВОЙ код и разбираться, не? Улыбающийся
Записан
trot
Гость
« Ответ #19 : Май 03, 2012, 10:57 »

Выкладываю фрагмент кода. Весь код выложить не могу
Записан
Bepec
Гость
« Ответ #20 : Май 03, 2012, 12:11 »

Кхм. Ты реально  веришь в то, что выложив 6 файлов из проекта, со всеми зависимостями/инклудами и взаимодействиями, что кто-то будет отлаживать твой код, вырезать зависимости и/или ставить заглушки? О_о

А впоследствии тебе покажет правильное решение, незная всей архитектуры проекта? О_о_О

Не говори мне, что ты реально так думаешь... Это заставляет усомниться в твоём желании разобраться.

PS есть такое понятие - минимально компилируемый проект. Это проект, собранный ТОБОЙ, который готов к запуску сразу после скачивания, в котором содержится твоя ПРОБЛЕМА.
Советую такой тебе сделать.

PPS Если же есть фанаты разбираться в чужом коде - отпишитесь, я всех перепишу Подмигивающий


Update:
В архиве находятся:
Код:
BaseForm.cpp
BaseForm.h
fZRS.cpp
fZRS.h
MyComboBox.cpp
MyComboBox.h
MyItemDelegate.cpp
MyItemDelegate.h

А вод код из файла MyItemDelegate.h, который реально вставляет:
Код:
#include "MyComboBox.h"
#include "MyCheck.h"
#include "BaseWidget.h"
#include "MyGradPicker.h"
#include "MyText.h"
#include "Global.h"
#include "MyDate.h"
#include "MyDateTime.h"
#include "MyTableBox.h"
#include "MyTreeBox.h"
« Последнее редактирование: Май 03, 2012, 12:13 от Bepec » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #21 : Май 03, 2012, 12:22 »

Выкладываю фрагмент кода. Весь код выложить не могу
Мде... Нагородил огород, однако.
Во-первых, почему при создании MyComboBox нельзя было просто отнаследоваться от QComboBox, а не создавать его на непонятной связке BaseWidgetText+ICtrlDelegate?
И коли уж дошло до этого, то достаточно было выставить setFocusProxy(), чтобы решить проблемы с фокусом.
Записан

Qt 5.11/4.8.7 (X11/Win)
trot
Гость
« Ответ #22 : Май 03, 2012, 13:38 »

Весь проект скинуть не реально. Это надо базу данных кидать. А обрезать его для минимально компиляции уйдет не мало времени. А насчет setFocusProxy() надо конечно попробовать разобраться. Попробую на своем простом примере повторить не желательную ситуацию. Как только это сделаю сразу скину проект или если решу проблему то отпишусь.
Записан
Bepec
Гость
« Ответ #23 : Май 03, 2012, 13:46 »

Вот то, что ты называешь простым примером - является минимально компилируемым проектом.

Если не можешь/нет времени/нет желания сделать его - что сказать. Надейся только на телепатов, aka Пантер.
Записан
trot
Гость
« Ответ #24 : Май 05, 2012, 08:46 »

Создал минимально компилируемый проект, который повторяет ситуацию, не разрушения едитора при уходе с него фокуса.
Чтобы это продемонстрировать нужно создать едитор, кликнуть по нему, чтобы появился курсор и после этого кликнуть либо  в lineedit, который находится вне таблицы, либо кликнуть по кнопке. При этом едитор не разрушается, а нужно, чтобы он разрушался. Как это сделать?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #25 : Май 05, 2012, 10:49 »

Во-первых...
Мдя, пока заставил собраться твой проект, несколько раз уже хотел снести его и мысленно посылал автора куда-нибудь подальше.
trot, помимо ntfs, есть ещё и другие файловые системы, которым абсолютно не безразличен регистр в названии файлов.
К тому же в spinboxdelegate.pro не все файлы были добавлены.

Во-вторых...
в MyComboBox.cpp поменяй
Код
C++ (Qt)
//setFocusProxy(m_comboBox);
на
Код
C++ (Qt)
m_comboBox->setFocusProxy(this);

Тебе же выше было сказано как решить проблему. Нужно было просто внимательно читать руководство.
И я бы просто отнаследовался от QComboBox, а не городил огород.
Записан

Qt 5.11/4.8.7 (X11/Win)
trot
Гость
« Ответ #26 : Май 05, 2012, 11:05 »

Поменял. В этом случае вообще невозможно что-либо ввести в lineedit, только можно выбирать из списка.

Цитировать
И я бы просто отнаследовался от QComboBox, а не городил огород.

А если мне надо именно так, как я сделал. Что в этом случае натыкаемся на ограничение Qt, в части делегатов.
« Последнее редактирование: Май 05, 2012, 11:19 от trot » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #27 : Май 05, 2012, 11:26 »

А если мне надо именно так, как я сделал. Что в этом случае натыкаемся на ограничение Qt, в части делегатов.
Ну тогда продолжай трахаться, ибо нечего лезть в чужой монастырь со своим уставом.
К тому же абсолютно непонятно, почему тебе "надо именно так".
Записан

Qt 5.11/4.8.7 (X11/Win)
trot
Гость
« Ответ #28 : Май 05, 2012, 11:52 »

Да я вроде и нелезу со своим уставом. Нигде не сказано, что я так не могу создавать виджеты. А в данном примере всего лишь частный случай для демонстрации того что имеем. И если это ограничение, то тогда люди должны об этом знать, чтобы это учитывать при проектированиии приложения.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #29 : Май 05, 2012, 12:01 »

Нигде не сказано, что я так не могу создавать виджеты. А в данном примере всего лишь частный случай для демонстрации того что имеем. И если это ограничение, то тогда люди должны об этом знать, чтобы это учитывать при проектированиии приложения.
Ты подсовываешь свой "black-box" editor в ItemView. В этом editor-e input фокус имеет его потомок, про существование которого ItemView не имеет ни малейшего понятия.  И ты удивляешься почему всё работает не так как ты хочешь. Хочешь, чтобы всё работало автоматом, подсовывай ItemView известную ему базу, в противном случае всё делай сам - фильтруй клавиатурный ввод, управляй фокусом и удалением редактора.
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.087 секунд. Запросов: 22.