gpt4 book ai didi

c++ - 在同一应用程序的实例之间拖放。 (GtkTreeView)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:16 25 4
gpt4 key购买 nike

我正在尝试从 GtkTreeView 接收同一应用程序实例之间的拖放内容。内容是指向对象的指针,我无法触发目标应用程序 TreeView 上的接收事件。我只能在同一 TreeView 中接收拖动内容。这是代码部分:

...
vector<Gtk::TargetEntry> gtkTargetsDest, gtkTargetsSrc;
gtkTargetsDest.push_back(Gtk::TargetEntry(
"SrcFile **pSrcFiles", Gtk::TargetFlags(0), 0));
gtkTargetsSrc.push_back(Gtk::TargetEntry(
"SrcFile **pSrcFiles", Gtk::TargetFlags(0), 1));
_gtkTreeView.enable_model_drag_dest(gtkTargetsDest);
_gtkTreeView.enable_model_drag_source(gtkTargetsSrc);
...

void onGtkTreeViewDragDataReceived(
const Glib::RefPtr<Gdk::DragContext> &pGdkDragContext, int x, int y,
const Gtk::SelectionData &gtkSelData, guint info, guint time)
{
if (info == 0) {
SrcFile** pSrcFiles
= (SrcFile**)gtkSelData.get_data();
while (*pSrcFiles) {
_ptrMFieldRef->add(*pSrcFiles); // add dropped src files
++pSrcFiles;
}
}
}

我尝试了 Gtk::TARGET_OTHER_APP 而不是 Gtk::TargetFlags(0) 但这根本没有帮助。我得到提示这可以与剪贴板一起使用,但我不知道这应该如何工作,因为接收事件没有被触发...

最佳答案

GtkTreeview 的拖放方法似乎仅限于在同一树部件内拖动。在程序之间使用常规的 gtk 拖放,示例请参见 Tutorial de GTK+ 2.0 TreeView

要将拖放限制为特定应用程序,可以设置/获取小部件名称,可以选择使用字符串中的 PID,例如“myapp.tree1-PID”。

关于c++ - 在同一应用程序的实例之间拖放。 (GtkTreeView),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33228810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com