• 4389阅读
  • 3回复

contextMenu 和 comboBox 的弹出控件是怎么实现的? [复制链接]

上一主题 下一主题
离线firerun
 

只看楼主 倒序阅读 楼主  发表于: 2013-07-30

contextMenu 弹出的的菜单位于窗口边缘时能智能的对显示方位进行优化,而且弹出窗口比主窗口大时可以显示在主窗口之外。
comboBox的下拉窗口是怎么弄的?

谁有思路说说,不要说重新弄个widget把窗口边框去掉的山寨方法。
离线firerun

只看该作者 1楼 发表于: 2013-07-30
参考 Google Suggest Example
离线dbzhang800

只看该作者 2楼 发表于: 2013-07-30
引用楼主firerun于2013-07-30 13:58发表的 contextMenu 和 comboBox 的弹出控件是怎么实现的? :
不要说重新弄个widget把窗口边框去掉的山寨方法。

如果你认为这是山寨,那就无解了,无论是QMenu还是其他弹出控件都是 QWidget的派生类。

非要找区别,也无非是Qt::Popup传入了QWidget的构造函数: QWidget(QWidget * parent = 0, Qt::WindowFlags f = 0)
离线jdwx

只看该作者 3楼 发表于: 2013-07-30
引用第2楼dbzhang800于2013-07-30 14:34发表的  :
如果你认为这是山寨,那就无解了,无论是QMenu还是其他弹出控件都是 QWidget的派生类。
非要找区别,也无非是Qt::Popup传入了QWidget的构造函数: QWidget(QWidget * parent = 0, Qt::WindowFlags f = 0)

正解!
就是用:Qt::Popup,自己计算窗口在屏幕上的位置,参见QMenu的代码,计算那一段代码是相当的繁琐。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个