Qt自定义标题栏

本文介绍了如何在Qt中自定义标题栏,以满足特定需求。内容包括设置代码和参考了相关问题的解决方案,如自定义标题栏后的窗口拖动和最大化时的显示问题。
摘要由CSDN通过智能技术生成

自定义Qt标题栏

根据自己的需要自定义标题栏。

代码

先在MainWindow.cpp中设置this->setWindowFlags(Qt::FramelessWindowHint | Qt::Popup);,然后:
TitleBar.h

class TitleBar : public QFrame
{
   
    Q_OBJECT

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

protected:
    //双击标题栏进行界面的最大化/还原
    virtual void mouseDoubleClickEvent(QMouseEvent *event);
    //进行界面的拖动
    virtual void mousePressEvent(QMouseEvent *event);
    virtual void mouseMoveEvent(QMouseEvent *event);
    virtual void mouseReleaseEvent(QMouseEvent *event);
    //设置界面标题与图标
    virtual bool eventFilter(QObject *obj, QEvent *event);

private slots:
    //进行最小化、最大化/还原、关闭操作
    void onClicked();

private:
    //最大化/还原
    void updateMaximize();

private:
    QLabel *m_pIconLabel; //标题栏图标
    QLabel *m_pTitleLabel; //标题栏标题
    QPushButton *m_pMinimizeButton; //最小化按钮
    QPushButton *m_pMaximizeButton; //最大化/还原按钮
    QPushButton *m_pCloseButton; //关闭按钮

    bool m_isPressed;
    QPoint m_startMovePos;
};

TitleBar.cpp

TitleBar::TitleBar(QWidget *parent)
    : QFrame (parent)
    , m_isPressed(false)
{
   
    //给成员变量申请内存
    m_pIconLabel = new QLabel(/*this*/);
    m_pTitleLabel = new QLabel(this);
    m_pMinimizeButton = new QPushButton(this);
    m_pMaximizeButton = new QPushButton(this);
    m_pCloseButton = new QPushButton(this);

    //初始化图标Label
    m_pIconLabel->setFixedSize(30, 30);
    m_pIconLabel->setScaledContents(true);
    QPixmap myPix_0_1(":/image/images/icon/icon.png");
    m_pIconLabel->setPixmap(myPix_0_1);

    m_pTitleLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
    m_pTitleLabel->setText("REALVIEW");
    m_pTitleLabel->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值