Вопрос

Я пытаюсь перехватить событие двойного щелчка в пустой области TreeView, чтобы создать новый узел.К сожалению, стандартный способ не работает.Я попытался прикрепить ButtonPressEvent как к TreeView, так и к ScrolledWindow, в котором отображается телевизор.размещается.Я не получаю никаких обратных вызовов к своей функции.

Как я могу решить эту проблему?

Это было полезно?

Решение

Вам нужно будет использовать GLib.ConnectBeforeAttribute в вашем обработчике для обработки TreeView.ButtonPressEvent , в противном случае виджет обработает событие внутренне, и ваш обработчик не будет вызван.

пример:

[GLib.ConnectBefore]
void OnTreeViewButtonPressEvent(object sender, ButtonPressEventArgs e)
{
    if (e.Type == Gdk.EventType.TwoButtonPress)
    {
        // double click
    }
}    

Другие советы

http://old.nabble.com/CellRenderer-editable-on-double-click-td24975510.html

self.treeview.connect("button-press-event",self.cell_clicked)

def cell_clicked(self, widget, event):
     if event.button == 1 and event.type == gtk.gdk.BUTTON_PRESS:
        print "Double clicked on cell"

Я думаю, что у Treeview есть свое собственное окно.

Получаем дескриптор окна, а затем отправляем сообщение(treeview->Getsafehwnd() , tvi_root, tvichildren).

Приведенное выше сообщение предназначено только для вашего понимания .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top