Qt 实现无标题窗口的移动
2013-05-21 20:27
309 查看
最近要实现无标题窗口的移动这个功能,以前就写过这个,所以为了让大家参考,我现在把关键功能代码晒晒
在你源码的头文件中定义两个成员变量和mouseMoveEvent(QMouseEvent *),mousePressEvent(QMouseEvent *),mouseReleaseEvent(QMouseEvent *)的重写
bool m_isMoveable;
QPoint dragPosition;
在构造函数中对m_isMoveable初始化
m_isMoveable = false;
void Widget::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons&&Qt::LeftButton&&m_isMoveable)
{
move(event-globalPos() - dragPosition);
}
}
void Widget::mousePressEvent(QMouseEvent *event)
{
if(event->button == Qt::LeftButton)
{
dragPosition = event->globalPos() - frameGeometry().topLeft();
QRect rect = this->ui->frame->frameRect();
//由于没有标题栏,所以我用frame作为标题栏
if(rect.contains(event->pos()))
{
m_isMoveable = true;
}
event->accept();
}
}
void Widget::mouseReleaseEvent(QMouseEvent *)
{
if(m_isMoveable)
m_isMoveable = false;
}
整个功能代码就写完了,这样你就可以实现无标题窗口的移动
在你源码的头文件中定义两个成员变量和mouseMoveEvent(QMouseEvent *),mousePressEvent(QMouseEvent *),mouseReleaseEvent(QMouseEvent *)的重写
bool m_isMoveable;
QPoint dragPosition;
在构造函数中对m_isMoveable初始化
m_isMoveable = false;
void Widget::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons&&Qt::LeftButton&&m_isMoveable)
{
move(event-globalPos() - dragPosition);
}
}
void Widget::mousePressEvent(QMouseEvent *event)
{
if(event->button == Qt::LeftButton)
{
dragPosition = event->globalPos() - frameGeometry().topLeft();
QRect rect = this->ui->frame->frameRect();
//由于没有标题栏,所以我用frame作为标题栏
if(rect.contains(event->pos()))
{
m_isMoveable = true;
}
event->accept();
}
}
void Widget::mouseReleaseEvent(QMouseEvent *)
{
if(m_isMoveable)
m_isMoveable = false;
}
整个功能代码就写完了,这样你就可以实现无标题窗口的移动
相关文章推荐
- qt实现无标题栏透明可移动窗口
- 实现Qt无标题窗口移动的改进
- qt实现无标题窗口移动范围
- 自学QT之实现窗口移动
- 使用OnNcHitTest消息实现无标题窗口的移动
- QT无标题,透明,可以移动,可以伸缩基本实现
- qt实现无标题栏的可移动窗体
- Swing —— 无标题栏时实现窗口移动
- Qt 结构体 正则表达 居中显示 页面置顶 页面全局化 标题命名 标题最大化等按钮失效 去标题栏令窗口不可移动
- qt 窗口无标题在桌面移动,不可移出可视范围之外
- 自学QT之实现窗口移动
- c#如何实现无标题栏窗口程序的移动?
- QT实现可移动和改变尺寸的无边框窗口
- c#如何实现无标题栏窗口程序的移动?
- JS实现弹出可移动的层,窗口,提示框(可自定弹出层的标题和内容)
- Qt去除标题实现可以移动
- Qt去掉窗口标题栏实现移动缩放
- QT实现拖动没有标题栏的窗口
- Qt之无边框自定义最小化、关闭按钮并实现窗口移动
- 在VB中实现移动没有标题栏的窗口