您的位置:首页 > 编程语言 > Qt开发

Qt无边框窗口的“关闭”和“移动”

2016-05-10 15:04 330 查看
Qt在设计过程中,经常遇到无边框界面设计和鼠标拖拽移动,当点击自定义的“关闭”按钮时如何真正退出和实现窗口移动是一个常用的功能:

关于“关闭/退出”:

this->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint);    //不用Qt::SubWindow。
QPushButton *pb = new QPushButton(this);
pb->setText(tr("关闭"));
connect(pb,SIGNAL(clicked()),this,SLOT(close()));


关于“鼠标拖动”:

//QMoveTest.h
void mousePressEvent(QMouseEvent *e);
void mouseMoveEvent(QMouseEvent *e);
void mouseReleaseEvent(QMouseEvent *e);
QPoint startRelativePos;

//QMoveTest.cpp
void QMoveTest::mousePressEvent(QMouseEvent *e)
{
if (e->buttons() == Qt::LeftButton)
startRelativePos = e->pos();
}
void QMoveTest::mouseMoveEvent(QMouseEvent *e)
{
if (e->buttons() & Qt::LeftButton)
move(e->globalPos() - startRelativePos);
}
void QMoveTest::mouseReleaseEvent(QMouseEvent *e)
{
e->accept();
}


示例:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息