Название: Как прописать метод дочернего объекта в родительском классе? Отправлено: PavelVX от Май 28, 2012, 08:57 Заранее извиняюсь за возможно неправильную терминологию и криво составленный вопрос.
Есть виджет, в какой-то момент нужно создать собственное диалоговое окно с QTableView. Как мне у этого QTableView, на ходу, переопределить метод data(хочу в зависимости от данных отрисовывать по разному строки)??? Код: //мой метод Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: Bepec от Май 28, 2012, 09:19 TableView не трогай.
Трогать нужно делегаты. По 1 на каждый тип данных, или 1 общий. Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: PavelVX от Май 28, 2012, 09:36 Если честно, то не понял. Зачем мне делегаты для разового редактирования таблицы?
Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: Kurles от Май 28, 2012, 10:00 Код: //мой метод Код в модели. Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: Bepec от Май 28, 2012, 10:09 Разовое редактирование таблицы? Как же я сразу не догадался. И статичное наверно? КОНЕЧНО ЖЕ.
Это же всё написано в самом первом сообщении, да так подробно!!! Ну тогда конечно же бери Paint, рисуй там нужную картинку с таблицей и в нужный момент просто показывай пользователю!!! Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: PavelVX от Май 28, 2012, 10:54 С data у QTableView был не прав :( У модели для данного вью надо было.
То-есть, если я правильно понял аналогию, то для виджета, который будет принимать drop из drug/drop нужно писать наследника и там переопределять нужные методы? Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: Bepec от Май 28, 2012, 12:17 Да, ты прав, нооооо...
Сначала лучше объясни, что ты хочешь сделать. Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: kambala от Май 28, 2012, 16:11 откуда у всех такая нелюбовь к наследованию? как будто это что-то плохое.
Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: Пантер от Май 28, 2012, 16:13 откуда у всех такая нелюбовь к наследованию? как будто это что-то плохое. Если наследования можно избежать, то лучше его не использовать. Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: PavelVX от Май 29, 2012, 06:19 Автор: kambala Цитата откуда у всех такая нелюбовь к наследованию? как будто это что-то плохое. Это не нелюбовь, это здравый смысл. Зачем мне плодить класс ради разового использования? Я понимаю, когда класс будет использоваться переодически, но если мне нужно диалоговое окно с выводом табличной части - плодить классы я не буду. Автор: Bepec Цитата Да, ты прав, нооооо... Сначала лучше объясни, что ты хочешь сделать. Есть уже два случая, когда бы я не писал наследника, а переопределил методы находу. И думаю это только начало. :) 1. С чего вопрос и возник: диалоговое окно с таблицей, у которой нужно раскрасить красным критические значение. Делается через переопределение метода data в модели. Писать наследника для этого нехотелось бы. 2. Драг_дроп на контрол. Есть QListView с элементами, по которым будет компоноваться фильтр. На этот лист элементы фильтра перетаскиваются мышкой(драг_дроп). Тут 50/50. Можно и наследника сделать, заодно и в конструкторе поопределять все нужные переменные. Но можно и на ходу переопределить методы и реакции. Как-то так. Но в первом случае - наследник это точно сильно круто. Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: Пантер от Май 29, 2012, 09:19 1. Делаешь своего делегата и в нем красишь.
2. Чем стандартное поведение не устраивает? Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: PavelVX от Май 29, 2012, 09:50 1. Зачем городить делегата-то? Я помимо раскраски еще и редактировать могу.
2. а dropEvent(QDropEvent *event) вы как будете разбирать переданный элемент? Да и в остальных подобных методах нужны проверки. Я или запутался или понять не могу. Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: Пантер от Май 29, 2012, 09:53 1. И? Делегат тебе не запрещает редактировать.
Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: Bepec от Май 29, 2012, 10:09 Походу Павел запутался ;)
Ты можешь делать драг & дроп своих данных. Ты можешь делегатом раскрашивать всё что движется. Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: PavelVX от Май 29, 2012, 10:10 Но делегата-то все равно придется создавать или переопределять из имеющихся, а в нем уже делать раскраску. Я правильно понимаю?
Если применить это к реалиям, то в черновом раскладе покажите, как мне это сделать? (я правда запутался, и не могу понять, зачем тут делать делегат) Код:
Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: PavelVX от Май 29, 2012, 10:15 Есть форма, на ней 2 виджета: QListWidget1, QListWidget2.
Хочу сделать перетаскивание с 1 на 2. Для этого мне необходимо в QListWidget2 переопределить методы. Я сделал наследника так: Код: class listViewForDrop: public QListWidget Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: Bepec от Май 29, 2012, 10:24 Конечно я сейчас предложу фееричный костыль.(см. мою подпись)
Что тебе мешает производить драг & дроп на основной форме? Что мешает сделать основной виджет посредником между view? :) Если уж дойти до страаааашной системы, то так вообще можно намутить дофига всего ;) Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: PavelVX от Май 29, 2012, 10:38 Мешает отсутствие простоты ... :)
Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: Kurles от Май 29, 2012, 10:53 Код У тебя уже есть отнаследованный класс - вот в нем и переопределяй все эти даты и дропевенты, благо модель всё это поддерживает, если только тебе посимвольной расскраски не надо, хотя и ее можно с оперделенной долей извращения :) Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: PavelVX от Май 29, 2012, 11:45 Эхх, елы палы .....
Это ГЛОБАЛЬНЫЙ КЛАСС! В серьезных формах я его наследую и переопределяю только data. Тут смысла нет делать наследование. Название: Re: Как прописать метод дочернего объекта в родительском классе? Отправлено: Bepec от Май 29, 2012, 12:17 Павел, помоему вы бредите. У вас уже есть наследование, в других частях проекта у вас аналогичное наследование и тут вы заявляете - МНЕ НЕ НУЖНО НАСЛЕДОВАНИЕ! АРРРРРРрррРРррРРрр...
PS no comments... |