随笔 - 70, 文章 - 0, 评论 - 9, 引用 - 0
数据加载中……

通过QPoint确定框框位置

有时需要点击某个按钮后,在该按钮的下面或者右边弹出菜单或者弹出框。那么就需要对框框的位置进行定位。

弹出菜单实例

QPushButton *btnMenu = new QPushButton(tr("Menu"), this);
btnMenu
->setGeometry(QRect(50106030));
connect(btnMenu, SIGNAL(clicked()), 
this, SLOT(menuClickedSlot()));

//menuClickedSlot()中代码
    QPoint point;
    point.setX(btnMenu
->x());
    point.setY(btnMenu
->y() + btnMenu->height());
    point 
= mapToGlobal(point);

    QAction 
*action = menu->exec(point);
//.

如果是弹出框QDialog,则可以用setGeometry(point.x(), point.y(), width, height)来确定位置,并show()和hide()操作。

延伸
当鼠标事件操作不在该QDialog上时,该QDialog消失。需要重写event事件:
bool CompoundingDialog::event(QEvent *e)
{
    
if (e->type() == QEvent::WindowDeactivate)
        
this->hide();
    QDialog::
event(e);

    
return true;
}

posted on 2011-03-25 17:40 seahouse 阅读(718) 评论(0)  编辑 收藏 引用 所属分类: Qt


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理