• 3782阅读
  • 3回复

如何使QWidget范围超出父窗体? [复制链接]

上一主题 下一主题
离线qfmeal
 

只看楼主 倒序阅读 楼主  发表于: 2015-04-29
如下图所示效果:


右键弹出的菜单超过了它本属于的窗体。


我尝试写了如下代码:
  1. void CLabel::mousePressEvent(QMouseEvent *event)
  2. {
  3.     qDebug()<<"-------------------";
  4.     QWidget * m_mainFrame = new QWidget( this,Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint );
  5.     QFormLayout * layout = new QFormLayout;
  6.     QLabel * pp = new QLabel;
  7.     pp->setPixmap( QPixmap(":/003").scaled(20,200) );
  8.     layout->addRow( pp );
  9.     m_mainFrame->setLayout( layout );
  10.     m_mainFrame->show();
  11.     QLabel::mousePressEvent( event );
  12. }

我想在label上点击后,能够弹出一个下拉窗体。
但是我发现给widget的父类设置为label时,鼠标单击后弹出的widget超不出label的范围,
如果给widget的父类设置为NULL时,会弹出一个新窗体,

请问该如何设置?谢谢
离线qfmeal

只看该作者 1楼 发表于: 2015-04-29
刚发现 Qt::ToolTip
QWidget * m_mainFrame = new QWidget( this,Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint );  
替换成:
QWidget * m_mainFrame = new QWidget( this,Qt::ToolTip );
生成的widget可以超出原控件的范围
离线qfmeal

只看该作者 2楼 发表于: 2015-04-29
现在的问题是,如何使生成的widget处于label的下方。label的geometry()方法返回的是其label在父窗体的位置,如何才能转换成屏幕坐标?
离线qfmeal

只看该作者 3楼 发表于: 2015-04-29
使用mapToGlobal   转换坐标
快速回复
限100 字节
 
上一个 下一个