crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QTableWidget, Как програмно реализовать перетаскивание?, Типа Drag-n-Drop, но в коде.
Danila_Bagrofff
  опции профиля:
сообщение 16.4.2009, 12:07
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 14
Регистрация: 16.4.2009
Из: Нижний Новгород
Пользователь №: 690

Спасибо сказали: 0 раз(а)




Репутация:   0  


Есть проблемка: есть 3 виджета:

QTableWidget *tbl = new QTableWidget(10,10,this);
QFrame *frm = new QFrame(this);
QWidget *wdg = new QWidget(frm);

QHBoxLayout *hbl = new QHBoxLayout(frame);
hbl->insertWidget(wdg);

//затем в процессе программы
hbl->removeWidget(wdg);
wdg->setParent(tbl);
tbl->setCellWidget(0,0, wdg);


в процессе программы 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? Нужно перед новым размещением создавать дубликат обязательно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Danila_Bagrofff   QTableWidget, Как програмно реализовать перетаскивание?   16.4.2009, 12:07
- - igor_bogomolov   Тут проблема на самом деле в другом. Дело в том, ...   16.4.2009, 13:44
- - igor_bogomolov   Цитата(Litkevich Yuriy @ 16.4.2009, 15:02...   16.4.2009, 14:11
- - Litkevich Yuriy   igor_bogomolov, тут похоже человеку нужно не прост...   16.4.2009, 14:53
- - igor_bogomolov   Судя по его коду, он делает именно смену родителя....   16.4.2009, 14:56
- - Danila_Bagrofff   Да, я хочу перенести виджет, чтобы не дублировать....   17.4.2009, 7:19
- - igor_bogomolov   Да елы палы. Ты вообще читаешь что тебе отвечают. ...   17.4.2009, 8:20
- - Litkevich Yuriy   Цитата(Danila_Bagrofff @ 17.4.2009, 11:19...   17.4.2009, 9:40
- - igor_bogomolov   Цитата(Litkevich Yuriy @ 17.4.2009, 10:40...   17.4.2009, 10:38
- - Danila_Bagrofff   igor_bogomolov, вы уж извините =) Просто я искал р...   17.4.2009, 12:32
- - igor_bogomolov   По этой теме тоже баг репорт написал. Походу не пр...   22.4.2009, 20:51
- - igor_bogomolov   Привет всем. Сообщением выше я писал, ято отправл...   25.4.2009, 0:07
- - Litkevich Yuriy   Перевод: ЦитатаПривет Игорь, Спсибо за сообщение о...   25.4.2009, 0:54
- - igor_bogomolov   Спасибо, Юрий. Можно еще совет спросить. Я может ...   25.4.2009, 1:01
- - Litkevich Yuriy   Цитата(igor_bogomolov @ 25.4.2009, 5:01) ...   25.4.2009, 2:12
- - igor_bogomolov   Вот ответ который я получил ЦитатаHi Igor, Thanks ...   27.4.2009, 17:02


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.11.2024, 19:08