如何将GtkPopOver放入Gtk TreeView的单元格中。当我点击单元格时,我需要出现Popover。 我在GTKMM中找不到任何示例,而不是将GtkTreeView的单元格与一个GtkPopover相关联。
感谢。
答案 0 :(得分:0)
经历过类似的情况后,我能够用(python中的简化版本)来解决这个问题:
def click_callback(..., event):
rect = Gdk.Rectangle()
rect.x = event.button.x
rect.y = event.button.y
rect.width = rect.height = 1
popover = Gtk.Popover.new_from_model(treeview, model)
popover.set_pointing_to(rect)
popover.show()
答案 1 :(得分:0)
我已经解决了它,这是我使用的代码的简化版本:
class Table(Gtk.TreeView):
# Gtk stuff ...
@GtkTemplate.Callback
def on_button_press_event(self, widget, event):
path, path_iter, col = self.__get_path_at_position(event)
btn = event.button
if btn == 3:
pop = Gtk.Popover()
# Customize
pop.set_pointing_to(self.get_cell_area(path, col))
pop.set_relative_to(self)
pop.popup()
return True
return False
def __get_path_at_position(self, event):
path_info = self.get_path_at_pos(event.x, event.y)
if path_info:
path, column, cell_relative_x, cell_relative_y = path_info
path_iter = self.__model.get_iter(path)
return path, path_iter, column,
return None, None, None
虽然它不是C ++,但我认为它足以在C ++中实现。原来这两个功能
pop.set_pointing_to(self.get_cell_area(path, col))
pop.set_relative_to(self)
是必需的。