setToolTip("关闭"); QPushButton* maximizeButton =...-Go服务器开发" />

ZBLOG

CustomTitleBar::CustomTitleBar(QWidget *parent) : QWidget(parent) { setStyleSheet("background-color: rgb(221, 222, 226);"); QPushButton* closeButton = new QPushButton(); closeButton->setToolTip("关闭"); QPushButton* maximizeButton =...

要使得CustomTitleBar类能够在窗口最上方拖动整个窗口,你需要重写鼠标事件,以便在用户按下鼠标并移动时,可以更新窗口的位置。下面是修改后的代码示例,添加了鼠标事件来实现拖动功能:

  1. #include <QMouseEvent>
  2. class CustomTitleBar : public QWidget {
  3. Q_OBJECT
  4. public:
  5. explicit CustomTitleBar(QWidget *parent = nullptr);
  6. protected:
  7. void mousePressEvent(QMouseEvent *event) override;
  8. void mouseMoveEvent(QMouseEvent *event) override;
  9. private:
  10. bool dragging;
  11. QPoint dragPosition;
  12. };
  13. CustomTitleBar::CustomTitleBar(QWidget *parent)
  14. : QWidget(parent), dragging(false) {
  15. setStyleSheet("background-color: rgb(221, 222, 226);");
  16. // ... (其他初始化代码)
  17. }
  18. void CustomTitleBar::mousePressEvent(QMouseEvent *event) {
  19. if (event->button() == Qt::LeftButton) {
  20. dragging = true;
  21. dragPosition = event->globalPos() - parentWidget()->frameGeometry().topLeft();
  22. event->accept();
  23. }
  24. }
  25. void CustomTitleBar::mouseMoveEvent(QMouseEvent *event) {
  26. if (dragging && (event->buttons() & Qt::LeftButton)) {
  27. move(event->globalPos() - dragPosition);
  28. event->accept();
  29. }
  30. }
  31. void CustomTitleBar::mouseReleaseEvent(QMouseEvent *event) {
  32. if (event->button() == Qt::LeftButton) {
  33. dragging = false;
  34. event->accept();
  35. }
  36. }

解释:

  1. 成员变量:我们增加了一个bool dragging和一个QPoint dragPosition变量来跟踪是否正在拖动窗口以及鼠标的相对位置。

  2. 重写的事件处理函数

    • mousePressEvent: 当鼠标左键按下时,设置为拖动状态,并记录当前位置。
    • mouseMoveEvent: 如果正在拖动,计算新的位置并移动窗口。
    • mouseReleaseEvent: 当松开鼠标左键时,停止拖动。
  3. 父窗口移位:通过使用move()方法,将新计算的位置应用到父窗口(通常是主窗口)。

确保在构造函数中完成所有必要的按钮和布局初始化,然后将这些事件处理程序添加到你的自定义标题栏类中。这会允许你点击标题栏并拖动整个窗体。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:setToolTip("关闭"); QPushButton* maximizeButton =...">https://golang.0voice.com/?id=22257

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?