我在C中使用Gtk3时遇到了一个奇怪的问题:
我有一个2列的GTKTreeView(两个TEXT),我在其上添加(动态)单行:
该行的第二列是“可编辑”(使用林间空地)
我可以双击单元格,触发编辑模式:背景变为白色,并出现光标
但是,我无法使用键盘键入CELL:鼠标似乎可以正常工作(我可以毫无问题地粘贴到单元格中)。
TreeView本身已打开“CAN_FOCUS”标志
我在这里错过了什么?
答案 0 :(得分:0)
以下是一个小程序,它执行您所描述的内容(您应该发布一个显示您问题的小示例代码!)。对不起 - 这是用Python编写的 - 但它应该与你相似。注意:
from gi.repository import Gtk
class MainWindow(Gtk.Window):
def __init__(self):
super(MainWindow, self).__init__()
self.set_size_request(150, 60)
self.connect("destroy", lambda x: Gtk.main_quit())
store = Gtk.ListStore(str, str)
view = Gtk.TreeView(model = store)
for i, hdr in enumerate(("Col1", "Col2")):
if i == 1:
renderer = Gtk.CellRendererText(editable = True)
renderer.connect("edited", self.on_edited)
else:
renderer = Gtk.CellRendererText()
col = Gtk.TreeViewColumn(hdr, renderer, text = i)
view.append_column(col)
store.append(("One", "Two"))
self.add(view)
self.show_all()
def on_edited(self, renderer, path, new_text):
print(" Modify the store here [edited text: %s]" % new_text)
def run(self):
Gtk.main()
def main(args):
mainwdw = MainWindow()
mainwdw.run()
return 0
if __name__ == '__main__':
import sys
sys.exit(main(sys.argv))
在这里没有效果(事实上,默认情况下它可能已开启)清单:
function createNewMainWindow() {
var a = 1000;
var b = 800;
mainWindow = new BrowserWindow({
show: true,
width: a,
height: b,
minWidth: 300,
minHeight: 300,
frame: false,
title: 'Recall',
icon: iconPath,
alwaysOnTop: false,
useContentSize: false,
webPreferences: {
zoomFactor: 1,
allowRunningInsecureContent: true,
nodeIntegration: true,
}
});
}
app.on('ready', async () => {
await installExtensions();
createNewMainWindow();
mainWindow.loadURL(`file://${__dirname}/app/app.html`);
mainWindow.show();
mainWindow.focus();
}
初始窗口:
点击col2:
编辑:
从处理程序打印: