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: ..... Как тогда правильно перемещать виджет между другими? ----------- Отделено от темы: Шуточный пример |
|
|
Danila_Bagrofff |
17.4.2009, 7:19
Сообщение
#2
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 16.4.2009 Из: Нижний Новгород Пользователь №: 690 Спасибо сказали: 0 раз(а) Репутация: 0 |
Да, я хочу перенести виджет, чтобы не дублировать.
Сделал очень простой пример: Раскрывающийся текст DMainDialog::DMainDialog(QWidget *parent) : QDialog(parent) { vbl = new QVBoxLayout(this); tbl = new QTableWidget(4,4,this); tbl->setMinimumSize(100,100); tbl2 = new QTableWidget(4,4,this); tbl2->setMinimumSize(100,100); pb = new QPushButton("push", this); vbl->addWidget(tbl); vbl->addWidget(tbl2); vbl->addWidget(pb); lbl = new QLabel("label", this); vbl->addWidget(lbl); connect(pb, SIGNAL(clicked()), SLOT(clickPB())); i =0; } void DMainDialog::clickPB() { i++; if(i%2) tbl->setCellWidget(0,0,lbl); else tbl2->setCellWidget(0,0,lbl); } Если надо, могу скомпиленный вариант дать. Смысл в том, что после пары перемещений лэйбл вообще пропадает!!! И происходит ошибка сегментирования. Это бага Qt? Нужно перед новым размещением создавать дубликат обязательно? |
|
|
Текстовая версия | Сейчас: 28.11.2024, 19:08 |