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

来源:互联网 发布:阿里云第三方接口 编辑:程序博客网 时间:2024/06/06 09:01
  • 考虑到QT界面不是很美观,我们可以自己定义QT界面的标题栏,以及设置背景和边框根据自己的喜好,下图是正常的界面。

这里写图片描述



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


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

这里写图片描述

图标下载可以戳这


  • 接下来重画界面,头文件里定义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");

这里写图片描述


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

这里写图片描述



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

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