精华内容
下载资源
问答
  • Qt 自定义标题栏

    2019-01-23 15:52:17
    QWidget及其子类窗体组件的标题栏受操作系统的控制,即标题栏的界面风格与操作系统的主题风格相同,工程实践中需要开发者自行定义,达到美化应用程序界面的目的。开发环境是Qt5.7,调试成功,可自行下载,如有问题请...
  • QT自定义标题栏

    2021-07-30 14:24:39
    1、自定义标题栏 2、QT自带标题栏 自定义标题栏类的代码 1、ui界面 2、.h #include <QWidget> #include <QEvent> #include <QDockWidget> #include <QMouseEvent> namespace Ui { class...

    效果

    1、自定义标题栏
    在这里插入图片描述
    2、QT自带标题栏
    在这里插入图片描述

    自定义标题栏类的代码

    1、ui界面
    在这里插入图片描述
    2、.h

    #include <QWidget>
    #include <QEvent>
    #include <QDockWidget>
    #include <QMouseEvent>
    
    namespace Ui {
    class mTitleBar;
    }
    
    class mTitleBar : public QWidget
    {
        //Q_OBJECT
    public:
        explicit mTitleBar(QString title,QWidget *parent = nullptr);
        ~mTitleBar();
        void mousePressEvent(QMouseEvent *event);
        void mouseMoveEvent(QMouseEvent *event);
        void mouseReleaseEvent(QMouseEvent *event);
    
    private:
        Ui::mTitleBar *ui;
        bool            mPressBool;
        QPoint          mouseStartPoint;
        QPoint          mwindowTopLeftPoint;
        QDockWidget*    mpDockMouse;
    
    };
    

    3、.cpp

    #include "mtitlebar.h"
    #include "ui_mtitlebar.h"
    #include <QDockWidget>
    #include <QWidget>
    //构造函数
    mTitleBar::mTitleBar(QString title,QWidget *parent) :
        QWidget(parent),
        ui(new Ui::mTitleBar)
    {
     	ui->setupUi(this);
        mpDockMouse = new QDockWidget(this);
        mpDockMouse->hide();
        ui->label->setText(title);
        //囗:最大化/恢复
        connect(ui->pushButton, &QPushButton::clicked, [=]
        {
            mpDockMouse = qobject_cast<QDockWidget*>(parentWidget());
            if (mpDockMouse != nullptr)
            {
                if(mpDockMouse->isMaximized())  //显示原来的大小
                {
                    mpDockMouse->showNormal();
                }
                else //最大化
                {
                    mpDockMouse->showMaximized();
                }
    
            }
        });
        //× 关闭
        connect(ui->pushButton2, &QPushButton::clicked, [=]
        {
            mpDockMouse = qobject_cast<QDockWidget*>(parentWidget());
            if (mpDockMouse != nullptr)
            {
                mpDockMouse->close();
            }
        });
        //- 最小化
        connect(ui->pushButton3, &QPushButton::clicked, [=]
        {
            mpDockMouse = qobject_cast<QDockWidget*>(parentWidget());
    //        mpDockMouse->showMinimized();
            mpDockMouse->hide();
    
    
        });
    }
    
    //鼠标事件
    void mTitleBar::mousePressEvent(QMouseEvent *event)
    {
    
        if(event->button() == Qt::LeftButton)
        {
            mPressBool = true;
            //获得鼠标的初始位置
            mouseStartPoint = event->globalPos();
            //获得窗口的初始位置
            mpDockMouse = qobject_cast<QDockWidget*>(parentWidget());
            mwindowTopLeftPoint = mpDockMouse->frameGeometry().topLeft();
    
        }
    }
    
    void mTitleBar::mouseMoveEvent(QMouseEvent *event)
    {
        if(mPressBool)
        {
            //获得鼠标移动的距离
            QPoint distance = event->globalPos() - mouseStartPoint;
            //改变窗口的位置
            mpDockMouse = qobject_cast<QDockWidget*>(parentWidget());
            mpDockMouse->move(mwindowTopLeftPoint + distance);
        }
    }
    
    void mTitleBar::mouseReleaseEvent(QMouseEvent *event)
    {
        if(event->button() == Qt::LeftButton)
        {
            mPressBool = false;
        }
    }
    

    类设置自定义标题栏

    this->setTitleBarWidget(new mTitleBar("Cap",this));
    

    百度网盘链接

    提取码:wzds
    自定义标题栏

    展开全文
  • Qt自定义标题栏

    2020-06-21 14:37:01
    根据自己的需要自定义标题栏。 代码 先在MainWindow.cpp中设置this->setWindowFlags(Qt::FramelessWindowHint);,然后: TitleBar.h class TitleBar : public QFrame { Q_OBJECT public: explicit TitleBar...

    自定义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->setProperty("title",true);
    
        //设置按钮的固定大小、图片、取消边框
        m_pMinimizeButton->setIconSize(QSize(31,30));
        m_pMinimizeButton->setIcon(QIcon(":/image/images/icon/min_icon.png"));
        m_pMinimizeButton->setFlat(true);
    
        //--
        m_pMaximizeButton->setIconSize(QSize(31,30));
        m_pMaximizeButton->setIcon(QIcon(":/image/images/icon/max.png"));
        m_pMaximizeButton->setFlat(true);
    
        //--
        m_pCloseButton->setIconSize(QSize(31,30));
        m_pCloseButton->setIcon(QIcon(":/image/images/icon/close.png"));
        m_pCloseButton->setFlat(true);
    
    
        //设置窗口部件的名称
        m_pTitleLabel->setObjectName("whiteLabel");
        m_pMinimizeButton->setObjectName("minimizeButton");
        m_pMaximizeButton->setObjectName("maximizeButton");
        m_pCloseButton->setObjectName("closeButton");
    
    
        //给按钮设置静态tooltip,当鼠标移上去时显示tooltip
        m_pMinimizeButton->setToolTip("Minimize");
        m_pMaximizeButton->setToolTip("Maximize");
        m_pCloseButton->setToolTip("Close");
    
        //标题栏布局
        QHBoxLayout *pLayout = new QHBoxLayout(this);
        pLayout->setAlignment(Qt::AlignCenter);
        pLayout->setMargin(0);
    //    pLayout->addSpacing(5);
    //    pLayout->addWidget(m_pIconLabel);
        pLayout->addSpacing(48);
        pLayout->addWidget(m_pTitleLabel);
        pLayout->addStretch();
        pLayout->addWidget(m_pMinimizeButton);
        pLayout->addSpacing(5);
        pLayout->addWidget(m_pMaximizeButton);
        pLayout->addSpacing(5);
        pLayout->addWidget(m_pCloseButton);
        pLayout->addSpacing(46);
        pLayout->setSpacing(0);
        pLayout->setContentsMargins(0, 0, 0, 0);
        setLayout(pLayout);
    
        //连接三个按钮的信号槽
        connect(m_pMinimizeButton, SIGNAL(clicked(bool)), this, SLOT(onClicked()));
        connect(m_pMaximizeButton, SIGNAL(clicked(bool)), this, SLOT(onClicked()));
        connect(m_pCloseButton, SIGNAL(clicked(bool)), this, SLOT(onClicked()));
    
        this->setFixedHeight(44);
        SetWhiteTheme();
    //    SetBlackTheme();
    }
    
    TitleBar::~TitleBar()
    {
    
    }
    
    //双击标题栏进行界面的最大化/还原
    void TitleBar::mouseDoubleClickEvent(QMouseEvent *event)
    {
        Q_UNUSED(event); //没有实质性的作用,只是用来允许event可以不使用,用来避免编译器警告
    
        emit m_pMaximizeButton->clicked();
    }
    
    //进行界面的拖动  [一般情况下,是界面随着标题栏的移动而移动,所以我们将事件写在标题栏中比较合理]
    void TitleBar::mousePressEvent(QMouseEvent *event)
    {
        m_isPressed = true;
        m_startMovePos = event->globalPos();
        return QFrame::mousePressEvent(event);
    }
    
    void TitleBar::mouseMoveEvent(QMouseEvent *event)
    {
        if (m_isPressed)
        {
            QPoint movePoint = event->globalPos() - m_startMovePos;
    
            if(parentWidget()->parentWidget())
            {
                QPoint widgetPos = this->parentWidget()->parentWidget()->pos();
                m_startMovePos = event->globalPos();
                parentWidget()->parentWidget()->move(widgetPos.x() + movePoint.x(), widgetPos.y() + movePoint.y());
            }
        }
    }
    
    void TitleBar::mouseReleaseEvent(QMouseEvent *event)
    {
        m_isPressed = false;
    
        return QFrame::mouseReleaseEvent(event);
    }
    
    //使用事件过滤器监听标题栏所在的窗体,所以当窗体标题、图标等信息发生改变时,标题栏也应该随之改变
    bool TitleBar::eventFilter(QObject *obj, QEvent *event)
    {
        switch ( event->type() ) //判断发生事件的类型
        {
            case QEvent::WindowTitleChange: //窗口标题改变事件
            {
                QWidget *pWidget = qobject_cast<QWidget *>(obj); //获得发生事件的窗口对象
                if (pWidget)
                {
                    //窗体标题改变,则标题栏标题也随之改变
                    m_pTitleLabel->setText(pWidget->windowTitle());
                    return true;
                }
            }
            break;
    
            case QEvent::WindowIconChange: //窗口图标改变事件
            {
                QWidget *pWidget = qobject_cast<QWidget *>(obj);
                if (pWidget)
                {
                    //窗体图标改变,则标题栏图标也随之改变
                    QIcon icon = pWidget->windowIcon();
    //                m_pIconLabel->setPixmap(icon.pixmap(m_pIconLabel->size()));
                    return true;
                }
            }
            break;
    
            case QEvent::Resize:
                updateMaximize(); //最大化/还原
                return true;
    
            default:
            return QWidget::eventFilter(obj, event);
        }
    
        return QWidget::eventFilter(obj, event);
    }
    
    //进行最小化、最大化/还原、关闭操作
    void TitleBar::onClicked()
    {
        //QObject::Sender()返回发送信号的对象的指针,返回类型为QObject *
        QPushButton *pButton = qobject_cast<QPushButton *>(sender());
    
        QWidget *pWindow = this->window(); //获得标题栏所在的窗口
    
        if (pWindow->isTopLevel())
        {
            //判断发送信号的对象使哪个按钮
            if (pButton == m_pMinimizeButton)
            {
                pWindow->showMinimized(); //窗口最小化显示
            }
            else if (pButton == m_pMaximizeButton)
            {
    //            pWindow->isMaximized() ? pWindow->showNormal() : pWindow->showMaximized();  //窗口最大化/还原显示
                pWindow->isFullScreen() ? pWindow->showNormal() : pWindow->showFullScreen();
            }
            else if (pButton == m_pCloseButton)
            {
                pWindow->close(); //窗口关闭
            }
        }
    }
    
    //最大化/还原
    void TitleBar::updateMaximize()
    {
        QWidget *pWindow = this->window(); //获得标题栏所在的窗口
    
        if (pWindow->isTopLevel())
        {
            bool bMaximize = pWindow->isFullScreen(); //判断窗口是不是最大化状态,是则返回true,否则返回false
            if (bMaximize)
            {
                //目前窗口是最大化状态,则最大化/还原的toolTip设置为"Restore"
                m_pMaximizeButton->setToolTip(tr("Restore"));
                //设置按钮的属性名为"maximizeProperty"
                m_pMaximizeButton->setProperty("maximizeProperty", "restore");
            }
            else
            {
                //目前窗口是还原状态,则最大化/还原的toolTip设置为"Maximize"
                m_pMaximizeButton->setToolTip(tr("Maximize"));
                //设置按钮的属性名为"maximizeProperty"
                m_pMaximizeButton->setProperty("maximizeProperty", "maximize");
            }
    
            m_pMaximizeButton->setStyle(QApplication::style());
        }
    }
    

    参考

    Qt—去掉标题栏后,最大化应用程序窗口时,窗口遮住了任务栏的问题
    QT自定义标题栏的可拖拽窗口
    Qt之界面(自定义标题栏、无边框、可移动、缩放)

    展开全文
  • QT 自定义标题栏

    2018-11-17 20:21:51
    1、去除旧的标题栏 //去除QDialog对话框有上角问号 Qt::WindowFlags flags=Qt::Dialog;flags |=Qt::WindowCloseButtonHint;flags |=Qt::FramelessWindowHint; setWindowFlags(flags); flags |=Qt::...

    1、去除旧的标题栏

        //去除QDialog对话框有上角问号  
        Qt::WindowFlags flags=Qt::Dialog;flags |=Qt::WindowCloseButtonHint;flags |=Qt::FramelessWindowHint;
        setWindowFlags(flags);
    
    flags |=Qt::FramelessWindowHint;的意思是去除标题栏

    2、自定义新的标题栏

    参考自 https://blog.csdn.net/u014156690/article/details/49751425

    mainwindow.h 里面加

    private slots: void on_actionMinimize_triggered(); //最小化窗口 
    void on_actionClose_triggered(); //关闭窗口 
    void on_actionMaximize_triggered(); //最大化窗口
    

    mainwindow.cpp里面加

    int width = this->width();//获取界面的宽度 
    QToolButton *minButton = new QToolButton(this); //最小按钮 
    QToolButton *helpButton = new QToolButton(this); //帮助按钮 
    QToolButton *closeButton= new QToolButton(this); //关闭按钮 
    QToolButton *maxButton = new QToolButton(this); //最大按钮 
    QToolButton *menuButton = new QToolButton(this); //菜单按钮 
    QToolButton *normalButton = new QToolButton(this); 
    QToolButton *shadeButton = new QToolButton(this); 
    QToolButton *unshadeButton = new QToolButton(this); 
    connect(minButton, SIGNAL(clicked()), this, SLOT(on_actionMinimize_triggered())); connect(closeButton, SIGNAL(clicked()), this, SLOT(on_actionClose_triggered())); connect(maxButton, SIGNAL(clicked()), this, SLOT(on_actionMaximize_triggered())); //获取最小化、关闭按钮图标 
    QPixmap minPix = style()->standardPixmap(QStyle::SP_TitleBarMinButton); 
    QPixmap helpPix = style()->standardPixmap(QStyle::SP_TitleBarContextHelpButton); QPixmap closePix = style()->standardPixmap(QStyle::SP_TitleBarCloseButton); 
    QPixmap maxPix = style()->standardPixmap(QStyle::SP_TitleBarMaxButton); 
    QPixmap shadePix = style()->standardPixmap(QStyle::SP_TitleBarShadeButton); 
    QPixmap unshadePix = style()->standardPixmap(QStyle::SP_TitleBarUnshadeButton); QPixmap normalPix = style()->standardPixmap(QStyle::SP_TitleBarNormalButton); 
    QPixmap menuPix = style()->standardPixmap(QStyle::SP_TitleBarMenuButton); //设置最小化、关闭按钮图标 
    minButton->setIcon(minPix); 
    closeButton->setIcon(closePix); 
    helpButton->setIcon(helpPix); 
    maxButton->setIcon(maxPix); 
    shadeButton->setIcon(shadePix); 
    unshadeButton->setIcon(unshadePix); 
    normalButton->setIcon(normalPix); 
    menuButton->setIcon(menuPix); //设置最小化、关闭按钮在界面的位置 normalButton->setGeometry(width-160, 0, 20, 20); 
    menuButton->setGeometry(width-140, 0, 20, 20);
     minButton->setGeometry(width-120,0,20,20); 
    closeButton->setGeometry(width-100,0,20,20); 
    helpButton->setGeometry(width-80,0,20,20);
     maxButton->setGeometry(width-60, 0, 20, 20); 
    shadeButton->setGeometry(width-40,0, 20, 20); 
    unshadeButton->setGeometry(width-20, 0, 20, 20); //设置鼠标移至按钮上的提示信息 minButton->setToolTip(tr("最小化")); 
    closeButton->setToolTip(tr("关闭")); m
    axButton->setToolTip(tr("最大化")); //设置最小化、关闭等按钮的样式 minButton->setStyleSheet("background-color:transparent;"); closeButton->setStyleSheet("background-color:transparent;"); normalButton->setStyleSheet("background-color:transparent;"); menuButton->setStyleSheet("background-color:transparent;"); helpButton->setStyleSheet("background-color:transparent;"); maxButton->setStyleSheet("background-color:transparent;"); shadeButton->setStyleSheet("background-color:transparent;"); unshadeButton->setStyleSheet("background-color:transparent;");
    void MainWindow::on_actionMinimize_triggered() 
    { //系统自定义的最小化窗口函数 
       showMinimized(); 
    }
    void MainWindow::on_actionClose_triggered() 
    { //系统自定义的窗口关闭函数 
        close();
     } 
    void MainWindow::on_actionMaximize_triggered() 
    { //最大化 
        showMaximized() 
    }
    

     

    展开全文
  • 初学者项目需要,自己封装的一个qt自定义标题栏,可以直接调用。环境是vs2013+qt5.6.2,其他环境我也不知道能否使用,谨慎下载。 大部分标题栏的显示效果都放在paintEvent函数中,可以动态更改。大部分效果都写了...
  • qt 自定义标题栏

    2018-05-08 19:16:49
    自定义标题栏其实就两大部分:1:重写基类的纯虚函数1&gt;mousePressEvent(QMouseEvent *event)2&gt;mouseReleaseEvent(QMouseEvent *event)3&gt;mouseMoveEvent(QMouseEvent *event)2:编写标题栏对应 ...

    在做产品的时候,往往为了美观自己定义标题栏.

    自定义标题栏其实就两大部分:

    1:重写基类的纯虚函数

    1>mousePressEvent(QMouseEvent *event)

    2>mouseReleaseEvent(QMouseEvent *event)

    3>mouseMoveEvent(QMouseEvent *event)

    2:编写标题栏对应 min,max,close,三个曹函数;

    如下一个简单的demon:

    如果需要在标题栏加入图片,文字说明,可以将其加入到水平布局器中.

    hb=new QHBoxLayout;

    hb->addWidget(button_min);

    hb->addWidget(button_max);

    hb->addWidget(button_close);

    setLayout(hb);



    代码如下:

    头文件:

    #include<QWidget>
    #include<QMouseEvent>
    #include<QPushButton>
    #include<QHBoxLayout>
    #include<QToolButton>
    class my_title:public QWidget
    {
        Q_OBJECT
    public:
      explicit  my_title(QWidget *parent=0);
      bool is_press;
      QPoint pos;   //保存鼠标点击的坐标
      virtual void mousePressEvent(QMouseEvent *event);
      virtual void mouseMoveEvent(QMouseEvent *event);
      virtual void mouseReleaseEvent(QMouseEvent *event);
      QToolButton *button_min;
      QToolButton *button_close;
      QToolButton *button_max;
      QHBoxLayout *hb;
      void init();
    public slots:
      void slot_close();  //关闭曹函数
      void slot_min();// 最小化
      void slot_max(); //最大话
    };

    CPP文件:

    #include"my_title.h"
    #include<QWidget.h>
    #include<QDebug>
    my_title::my_title(QWidget *parent):QWidget(parent)
    {
        this->setFixedHeight(50);
        QPalette pal;
        pal.setColor(QPalette::Background, QColor(22, 164, 250));
        setAutoFillBackground(true);
        setPalette(pal);
        init();
        connect(button_close,SIGNAL(clicked()),this,SLOT(slot_close()));
        connect(button_max,SIGNAL(clicked()),this,SLOT(slot_max()));
        connect(button_min,SIGNAL(clicked()),this,SLOT(slot_min()));
    }

    /*************************************

    *这里重点讲解三个虚函数

    ***************************************/

    1:pressEvent函数主要是获取鼠标按下的坐标;

    void my_title::mousePressEvent(QMouseEvent *event)
    {
    
        if(event->button()==Qt::LeftButton)
        {
           is_press=true;
           pos=event->globalPos(); //获取鼠标当前的坐标
        }
        event->ignore();//忽略事件,意思就是说鼠标点击了,但是不是左键,事件会一直执行寻找对应执行他的事件。所以这块可以忽略调事件.
    }
    void my_title::mouseReleaseEvent(QMouseEvent *event)
    {
        is_press=false;
        event->ignore();
    }
    2:
    move_pos=event->globalPos()-pos;

    获得鼠标从点击到移动两者之间的坐标向量;

    window()->move(window()->pos()+move_pos);

    鼠标的坐标+移动的向量,就是最后的位置。

     pos = event->globalPos();

    这一步必须属注意:因为鼠标移动是不断变化的,所以当前的坐标也要实时获取。

    window()这个函数可以自行查找下,有好几种替代的方法;

    void my_title::mouseMoveEvent(QMouseEvent *event)
    {
        QPoint move_pos;
        if(is_press)
        {
            qDebug()<<"1111111111111";
            move_pos=event->globalPos()-pos;
            pos = event->globalPos();
            window()->move(window()->pos()+move_pos);
        }
        event->ignore();
    }
    void my_title::init()
    {
        button_close=new QToolButton;
        button_close->setFixedSize(30,30);
     button_close->setStyleSheet("border-style:outset;background-color: rgb(22, 164, 250);image: url(:/new/ui_image/close.png);");
        button_max=new QToolButton;
        button_max->setStyleSheet("border-style:outset;background-color: rgb(22, 164, 250);image: url(:/new/ui_image/max.png);");
        button_max->setFixedSize(30,30);
        button_min=new QToolButton;
        button_min->setFixedSize(30,30);
        button_min->setStyleSheet(" border-style:outset;background-color: rgb(22, 164, 250);image: url(:/new/ui_image/min.png);");
        hb=new QHBoxLayout;
        hb->addWidget(button_min);
        hb->addWidget(button_max);
        hb->addWidget(button_close);
        setLayout(hb);
    }
    void my_title::slot_close()
    {
        this->window()->close();
    }
    void my_title::slot_max()
    {
        this->window()->showMaximized();
    }
    void my_title::slot_min()
    {
        this->window()->showMinimized();
    }

    展开全文
  • qt自定义标题栏

    2020-04-05 17:37:51
    1)创建一个标题的界面类,重新实现鼠标移动点击等事件 2)设置主界面无边框,...setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); QtGuiDetailTitle *title = new QtGuiDetailTitle(this); ui...
  • QT自定义标题栏最大最小化关闭按钮源码,专给入门者参考源码 QT5,VS2017,窗口背景贴图按钮贴图
  • 一、Qt自定义标题栏简介 QWidget及其子类窗体组件的标题栏受操作系统的控制,即标题栏的界面风格与操作系统的主题风格相同,工程实践中需要开发者自行定义,达到美化应用程序界面的目的。 二、Qt自定义标题栏实现 1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,312
精华内容 1,324
关键字:

qt自定义标题栏