• 4788阅读
  • 3回复

这个问题不搞清楚,今晚睡不踏实 [复制链接]

上一主题 下一主题
离线levine
 
只看楼主 倒序阅读 楼主  发表于: 2008-03-27
— 本帖被 XChinux 执行加亮操作(2008-03-29) —
其实是之前一个帖子中未解决的问题。
Windows下的一个QT应用程序。界面是用Qt Designer画出来的。比如我画了一个文本编辑器,起名就叫textEditor。但我想重新实现这个文本编辑器的一些虚函数。比如我想修改一下它的Context Menu。该如何实现?
离线jorneyr

只看该作者 1楼 发表于: 2008-03-28
可不可以写一个类如MyTextEditor继承QTextEditor,重写好Context Menu,然后把Designer生成的代码中的QTextEditor的名字换成你继承的类名MyTextEditor,这样,界面中text editor的位置等什么都没变,但也实现了自己的Context Menu
离线levine
只看该作者 2楼 发表于: 2008-03-28
我昨晚试了一下,这样不行,因为uic会根据ui文件重新生成一次界面的cpp文件,会覆盖修改的文件。
离线levine
只看该作者 3楼 发表于: 2008-03-28
好像直接从控件框里拖出来类型就是原始的类型,比如文本编辑器的类型就是QTextEdit。重新编译的时候(包括编译ui文件),就按照QTextEdit生成代码。但是我想不明白的是:在设置控件的时候,可以设定属性ContextMenuPolicy为Qt::ActionsContextMenu,Qt::CustomContextMenu,Qt::DefaultContextMenu,Qt::NoContextMenu,Qt::PreventContextMenu。这和自己去继承一个QTextEdit类可以设置的项是一样。感觉好像可以重新实现ContextMenu似的,不然它也不会给这么多选择啊
快速回复
限100 字节
 
上一个 下一个