QTableWidget, Как програмно реализовать перетаскивание?, Типа Drag-n-Drop, но в коде. |
Здравствуйте, гость ( Вход | Регистрация )
QTableWidget, Как програмно реализовать перетаскивание?, Типа Drag-n-Drop, но в коде. |
Danila_Bagrofff |
16.4.2009, 12:07
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 16.4.2009 Из: Нижний Новгород Пользователь №: 690 Спасибо сказали: 0 раз(а) Репутация: 0 |
Есть проблемка: есть 3 виджета:
в процессе программы wdg должен перемещаться между двумя виджетами. Соответственно менять родителя. Лэаут сам тоже устанавливает виджету родителя. То есть у wgt становится родителем frm после команды insertWidget(). есть команда setParent(). Но при смене родителя она ругается. Если мы перемещаем wdg возникает ошибка: Цитата X Error: BadWindow (invalid Window parameter) 3 Major opcode: 25 (X_SendEvent) Resourse id: ..... Как тогда правильно перемещать виджет между другими? ----------- Отделено от темы: Шуточный пример |
|
|
igor_bogomolov |
16.4.2009, 13:44
Сообщение
#2
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Тут проблема на самом деле в другом.
Дело в том, что один и тот же виджет перемещается между фреймом и ячейкой таблицы. В таблицу виджет устанавливается через setCellWidget. Если заглянуть в исходники данной функции, докопаемся до следущего кода. Раскрывающийся текст
Обратите внимание на код. Когда вставляется виджет, сначало происходит удаление старого. При этом не происходит никакой проверки. Т.о. образом при повторном вставлении виджета в ячейку, модель ее просто удаляет. Вобщемто недоработка на мой взгляд. Обойти проблему можно, если только каждый раз создавать новый виджет. Что не есть хорошо. ИМХО. Сообщение отредактировал igor_bogomolov - 16.4.2009, 14:50 |
|
|
Текстовая версия | Сейчас: 29.4.2024, 18:31 |