2016-02-09 2 views
0

Я использую wxWidgets 3.0.2 с Gtk на Linux.wxDataViewCtrl и DnD

Я пытаюсь сделать wxDataViewCtrl целью для перетаскивания. Я получил класс из wxTextDropTarget, а затем сделал вызов wxDataViewCtrl :: SetDropTarget(), чтобы сделать экземпляр этого класса целью перехода для wxDataViewCtrl.

Однако ничего не происходит. Каждый раз, когда я пытаюсь что-то сбросить в wxDataViewCtrl, метод wxDropSource :: DoDragDrop() возвращает wxDragCancel. Для моего пользовательского класса wxTextDropTarget я переопределял метод OnEnter() и записывал его в stdout «OnEnter()» всякий раз, когда я входил в wxDataViewCtrl с чем-то, чтобы отбросить, но ничего не записывается в stdout.

Чтобы проверить, что я даже выполняю собственный класс wxTextDropTarget правильно и правильно настроил источник кавычек, я добавил wxTextCtrl в свой графический интерфейс и сделал цель для удаления и все работало как ожидалось: wxDropSource :: DoDragDrop() возвращен wxDragCopy и «OnEnter()» будут записаны в stdout, когда я войду в wxTextCtrl с чем-то, что нужно отбросить.

Does wxDataViewCtrl не поддерживает DnD? Или есть что-то еще, что я вижу?

ответ

0

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

После написания небольшой тестовой программы просто для проверки DnD между элементом управления и wxDataViewCtrl и обнаружения того, что он работает нормально, я вернулся к своему оригинальному приложению и смотрел на него немного дольше, чтобы попытаться выяснить, что я был делал по-другому. Оказывается, мне нужно было вызвать SetDropTarget() в окне PARENT целевого wxDataViewCtrl, а не сам wxDataViewCtrl, т. Е. My_data_view_ctrl-> GetParent() -> SetDropTarget (бла-бла-бла) ;.

Однако мне не нужно было это делать в своей тестовой программе, поэтому я подумал, что это немного странно. Единственная разница между моей тестовой программой и моей реальной программой заключалась в том, что в моей реальной программе у меня есть wxDataViewCtrl внутри wxStaticBoxSizer, и я думаю, что это было проблемой. Я подозреваю, что wxStaticBox (который использует wxStaticBoxSizer) получал уведомление о переходе вместо wxDataViewCtrl, поэтому мне нужно было установить его SetDropTarget(), а не wxDataViewCtrl.

 Смежные вопросы

  • Нет связанных вопросов^_^