wxDataViewCtrl and DnD
wxDataViewCtrl and DnD
我在Linux上使用wxWidgets 3.0.2和Gtk。
我正在尝试使wxDataViewCtrl成为拖放操作的放置目标。 我从 wxTextDropTarget 派生了一个类,然后调用了 wxDataViewCtrl::SetDropTarget(( 以使该类的实例成为 wxDataViewCtrl 的放置目标。
但是,什么也没发生。 每次我尝试在 wxDataViewCtrl 上放一些东西时,wxDropSource::D oDragDrop(( 方法都会返回 wxDragCancel。 对于我的自定义wxTextDropTarget类,我覆盖了OnEnter((方法,并在我进入wxDataViewCtrl时将其写入stdout "OnEnter((",但没有任何内容写入stdout。
为了测试我是否在正确执行自定义 wxTextDropTarget 类并正确设置放置源,我在 GUI 中添加了一个 wxTextCtrl,并使放置目标和所有内容按预期工作:wxDropSource::D oDragDrop(( 返回 wxDragCopy,当我输入 wxTextCtrl 时,"OnEnter(("将被写入 stdout。
wxDataViewCtrl 不支持 DnD 吗? 还是我忽略了什么?
只是想我会跟进我自己的帖子,以防其他人遇到同样的问题。
在编写了一个小型测试程序只是为了在控件和 wxDataViewCtrl 之间测试 DnD 并发现它工作正常之后,我回到了我原来的应用程序并盯着它多看了一会儿,试图弄清楚我正在做什么不同。 事实证明,我需要在目标 wxDataViewCtrl 的 PARENT 窗口中调用 SetDropTarget((,而不是 wxDataViewCtrl 本身,即 my_data_view_ctrl->GetParent((->SetDropTarget(blah blah blah(;。
但是,我不必在我的测试程序中这样做,所以我觉得这有点奇怪。 我的测试程序和实际程序之间的唯一区别是,在我的实际程序中,我在wxStaticBoxSizer中具有wxDataViewCtrl,我认为这是问题。 我怀疑wxStaticBox(wxStaticBoxSizer使用(正在接收删除通知而不是wxDataViewCtrl,因此为什么我需要将其设置为SetDropTarget((而不是wxDataViewCtrl。
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- python ctypes and C++ pointers
- C++ const char with .begin() and .end()
- Threads with Classes and std::packaged_task
- wxDataViewCtrl and DnD