自定义QT标题栏和背景·边框

  • 考虑到QT界面不是很美观,我们可以自己定义QT界面的标题栏,以及设置背景和边框根据自己的喜好,下图是正常的界面。

自定义QT标题栏和背景·边框_第1张图片



  • 现在在项目的构造函数里ui.setupUi(this);后面添加如下几句代码,就可以去除标题栏,边框和背景。
//不显示标题栏,亦无边框
    setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
    //设置背景(全透明)
    setAttribute(Qt::WA_TranslucentBackground);


  • 接下来我们往项目文件夹里resource目录里添加我们自己喜欢的背景图片以及标题栏图片,有个问题是要选择与你设置的界面尺寸大小合适的尺寸图片,一般可以用p图软件自己定制你喜欢的图片,右键图片可以复制图片路径哈;如图

自定义QT标题栏和背景·边框_第2张图片

图标下载可以戳这


  • 接下来重画界面,头文件里定义Qpixmap 对象以及声明paintEvent函数;
private:
    virtual void paintEvent(QPaintEvent *event);
    QPixmap m_imgTitle, m_back;

  • 构造函数里加载选择的图片,paintEvent函数里重画背景边框和标题栏,如下->
m_imgTitle.load(":/snakegame/Resources/title-bg.jpg");
    m_back.load(":/snakegame/Resources/flower_128px_536725_easyicon.net.png");

自定义QT标题栏和背景·边框_第3张图片


  • 我设置的是以蒲公英为大背景,上面是兰花为标题栏背景如下图

自定义QT标题栏和背景·边框_第4张图片



  • 我们还可以自己设置按钮和功能,比如给pushButton添加个信号和槽实现界面隐藏退出等自定义功能根据自身喜好,我还想强调下用p图软件根据此界面尺寸定制背景图会更美观哦。

怎么样是不是比原来的界面更美观呢,不过有个问题是该界面你不能拖动
想一想用mouseMoveEvent mousePressEvent mouseReleaseEvent如何实现吧;
我也是才接触QT不久,希望和大家相互学习;

你可能感兴趣的:(QT,problem,QT标题栏背景,QT界面美化,重画QT界面)