Qt dockwidget 标题栏去掉关闭按钮,自定义双击操作

可以实现以下功能:

1. 隐藏了最大化最小化关闭等按钮

2. 可以自行修改标题栏中文字的位置类型等,标题栏的高度

3. dockwidget可以拖出来,双击就变全屏,再双击恢复原来的尺寸

4. 改程序实现了双屏或者多屏显示的时候,在指定的屏幕最大化

 

 

头文件

#ifndef TITLEWIDGET_H
#define TITLEWIDGET_H

#include <QWidget>
#include <QMouseEvent>

namespace Ui {
class titleWidget;
}

class titleWidget : public QWidget
{
    Q_OBJECT

public:
    explicit titleWidget(QWidget *parent = nullptr);
    ~titleWidget();

    QSize sizeHint() const override { return QSize(40, 40); }

    void mouseDoubleClickEvent(QMouseEvent *event) override;
private:
    Ui::titleWidget *ui;
};

#endif // TITLEWIDGET_H

执行部分

#include "titlewidget.h"
#include "ui_titlewidget.h"
#include <QDebug>

titleWidget::titleWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::titleWidget)
{
    ui->setupUi(this);
    setStyleSheet("border:1px solid red;");
}

titleWidget::~titleWidget()
{
    delete ui;
}
#include "QDockWidget"
#include "QDesktopServices"
#include "QDesktopWidget"
void titleWidget::mouseDoubleClickEvent(QMouseEvent *event)
{
    QDockWidget *w = (QDockWidget *)this->parentWidget();
    qDebug() << w->isFloating();

    if(w->isFloating()){
        static bool max = false;
        static QRect location = w->geometry();

        if (max) {
            w->setGeometry(location);

        } else {
            location = w->geometry();
            w->setGeometry(qApp->desktop()->availableGeometry(w->geometry().center()));
        }
        qDebug() << "double clicked" <<max;
        max = !max;
    }
}


实现过程

    QDockWidget *dw = new QDockWidget;
    const QString name = "飞行轨迹";
    dw->setObjectName(name);
    dw->setWindowTitle(name);
    dw->setStyleSheet("border:1px solid blue;");
    dw->setMinimumWidth(50);
    dw->setMinimumHeight(50);
    dw->setWidget(new QTextEdit);
    dw->setWindowFlags(Qt::FramelessWindowHint |Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);


    QWidget *_titleWidget = new titleWidget;
    dw->setTitleBarWidget(_titleWidget);

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值