QT 界面隐藏标题栏后设置可支持拖动
QT 界面隐藏标题栏后设置可支持拖动,需要重写界面的mousePressEvent,mouseMoveEvent,mouseReleaseEvent事件,代码如下。
1 #include <QWidget> 2 #include <QMouseEvent> 3 4 class CustomWidget : public QWidget { 5 Q_OBJECT 6 7 public: 8 explicit CustomWidget(QWidget *parent = nullptr); 9 10 protected: 11 void mousePressEvent(QMouseEvent *event) override; 12 void mouseMoveEvent(QMouseEvent *event) override; 13 void mouseReleaseEvent(QMouseEvent *event) override; 14 15 private: 16 bool isDragging; 17 QPoint dragPosition; 18 }; 19 20 CustomWidget::CustomWidget(QWidget *parent) : QWidget(parent), isDragging(false) { 21 // 隐藏标题栏 22 setWindowFlags(Qt::FramelessWindowHint); 23 } 24 25 void CustomWidget::mousePressEvent(QMouseEvent *event) { 26 if (event->button() == Qt::LeftButton) { 27 isDragging = true; 28 dragPosition = event->globalPos() - frameGeometry().topLeft(); 29 event->accept(); 30 } 31 } 32 33 void CustomWidget::mouseMoveEvent(QMouseEvent *event) { 34 if (isDragging) { 35 move(event->globalPos() - dragPosition); 36 event->accept(); 37 } 38 } 39 40 void CustomWidget::mouseReleaseEvent(QMouseEvent *event) { 41 if (event->button() == Qt::LeftButton) { 42 isDragging = false; 43 event->accept(); 44 } 45 } 46 47 int main(int argc, char *argv[]) { 48 QApplication a(argc, argv); 49 CustomWidget widget; 50 widget.setGeometry(100, 100, 400, 200); // 设置初始位置和大小 51 widget.show(); 52 53 return a.exec(); 54 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧