Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: QCasper от Июль 26, 2006, 17:04



Название: несколько виджетов в ячейке
Отправлено: QCasper от Июль 26, 2006, 17:04
Все наверное видели в дизайнере в Property Editor в колонке Value в каждой ячейке помимо основного виджета, например комбобокса, есть еще маленькая кнопочка с загнутой нелево стрелкой, а иногда еще и кнопка вызывающая какой-нить диалог. Вот вопрос как зафигачить несколько виджетов в ячейку. И еще правильно ли я понял, это QTableWidget?


Название: несколько виджетов в ячейке
Отправлено: Asaphus_Expansus от Июль 26, 2006, 17:26
Если QTableWidget, то наверное нужно взять cellWidget, положить в него QHBoxLayout и натолкать все что нужно. На практике не пробовал, но начал бы именно с этого.


Название: несколько виджетов в ячейке
Отправлено: BaltikS от Июль 27, 2006, 08:37
Можно также положить виджет внутри которого имеются другие виджеты. Проверял и работает ;)


Название: несколько виджетов в ячейке
Отправлено: QCasper от Июль 27, 2006, 11:58
Цитата: "BaltikS"
Можно также положить виджет внутри которого имеются другие виджеты. Проверял и работает ;)


я тоже проверял. действительно работает. только там возникают проблемы с QWidgetTableItem, текст куда-то пропадает, в аутпут лезут какие-то варнинги. Вообще сами тролли делают это QItemDelegate'ом, но я там как-то плохо разобрался, и вообще нах тогда setCellWidget спрашивается. Даже в новой книжке не нашел ни одного примера с использованием метода setCellWidget. Мож кто знает где посмотреть когда и как тролли рекомендуют юзать setCellWidget?


Название: несколько виджетов в ячейке
Отправлено: dont от Июль 28, 2006, 13:51
setCellWidget лепиццо в ячейку и жрет кучу памяти(которая не освобождаеться при скролле), попробуй например создать таблицу и в какой-то столбец запихнуть штук 30 чекбоксов - будет плужить нереально.
Тролли правильно делают, что через делегаты отрисовывают, они при скролле освобождаються а потом наново создаються, и все гламурненько без плугов работает))))


Название: несколько виджетов в ячейке
Отправлено: QCasper от Июль 28, 2006, 21:13
Цитата: "dont"
setCellWidget лепиццо в ячейку и жрет кучу памяти(которая не освобождаеться при скролле), попробуй например создать таблицу и в какой-то столбец запихнуть штук 30 чекбоксов - будет плужить нереально.
Тролли правильно делают, что через делегаты отрисовывают, они при скролле освобождаються а потом наново создаються, и все гламурненько без плугов работает))))


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


Название: несколько виджетов в ячейке
Отправлено: Admin от Июль 29, 2006, 09:18
вообщето исходники дезайнера лежат в папке QT
можно глянуть их и станет понятно


Название: несколько виджетов в ячейке
Отправлено: QCasper от Июль 29, 2006, 10:23
Цитата: "Admin"
вообщето исходники дезайнера лежат в папке QT
можно глянуть их и станет понятно


да я их глянул. и ужаснулся  :shock:  :(


Название: несколько виджетов в ячейке
Отправлено: Sergey B. от Июль 29, 2006, 11:31
Цитата: "QCasper"
Цитата: "Admin"
вообщето исходники дезайнера лежат в папке QT
можно глянуть их и станет понятно


да я их глянул. и ужаснулся  :shock:  :(


Тролли мастера...  :D  
Код пишут ох.. можно... им самим бы Бланше почитать надо бы... :)


Название: несколько виджетов в ячейке
Отправлено: Admin от Июль 29, 2006, 13:08
код у них нормальный
иначе бы QT была бы сродни MFC :)


Название: несколько виджетов в ячейке
Отправлено: Sergey B. от Июль 29, 2006, 13:18
Цитата: "Admin"
код у них нормальный
иначе бы QT была бы сродни MFC :)


Никто не спорит, однако стиль его написания не соответствует их же рекомендациям... :)...


Название: несколько виджетов в ячейке
Отправлено: Admin от Июль 29, 2006, 23:28
ну это сплошь и рядом :)


Название: несколько виджетов в ячейке
Отправлено: Alexandr Az от Август 04, 2006, 09:57
Нигде я там кода нормального не встречал. Абслютно все классы защищены от наследования. Очень прикольно. А ещё опенсоюрце


Название: несколько виджетов в ячейке
Отправлено: dont от Август 04, 2006, 12:15
Цитата: "Alexandr Az"
Нигде я там кода нормального не встречал. Абслютно все классы защищены от наследования. Очень прикольно. А ещё опенсоюрце

Эт что вы имеете ввиду? Я что-то не понял... Где они там защищены от наследования? Сколько пишу на кутэ, столько и наследую их классы)))


Название: несколько виджетов в ячейке
Отправлено: Asaphus_Expansus от Август 04, 2006, 12:22
Я так понимаю, что имеются ввиду приватные под-объекты классов, наследники QObjectPrivate, к ктороым доступ перекрыт. Иногда (крайне редко) это действительно ставить некие проблемы.


Название: несколько виджетов в ячейке
Отправлено: Alexandr Az от Август 04, 2006, 12:49
Да, именно приватные. Но не редко ставит это проблемы. Все данные хранятся в этих (как вы сказали) подобъектах. Поэтому везде юзаются объекты, а не ссылки на них. Возьмём любую коллекцию. Из за того, что они возвращают объекты (а не ссылки) нет возможности переписать класс этой коллекции. Например коллекция QSqlRecord содержит QSqlField. Вот и попробуй переписать класс QSqlField. С начало я думал что они сума сошли, постоянно копируя объекты. Одако на самом деле нифига там не копируется, потому как тот приватный класс и есть сслылка. Так что закрыли они свои классы ой как хорошо. Косметические изменения сделать -поменять кой чего в потомках -  нет проблем. Глубже капнуть в класс - траблы.