当前位置:   article > 正文

【Qt】自定义标题栏添加最小化、最大化(还原)和关闭按钮

【Qt】自定义标题栏添加最小化、最大化(还原)和关闭按钮

创建界面时系统会自带一个标题栏,如果我们需要设计一个好看的界面,这个标题栏就会显得很突兀,所以我们需要自定义标题栏,隐藏原来的标题栏。

自定义标题栏,这些图标我们都可以自己设置,位置可以调整

具体步骤如下:

1.隐藏系统自带的标题栏

this->setWindowFlags(Qt::FramelessWindowHint);//隐藏边框

去掉标题栏会存在几个问题:

①界面会因为失去边框丢失调整大小的能力
②去除边框后,界面内容将无法移动

③原本自带的最小化、最大化、关闭按钮随着标题栏一起被隐藏了,所以接下来的步骤我们进行添加最小化、最大化、关闭按钮

2.创建最小化、最大化、关闭按钮

3.获取并设置按钮图标

4.设置按钮在界面的位置

 5.设置提示信息,样式和信号槽

具体代码

  1. //窗口标题栏设置
  2. this->setWindowFlags(Qt::FramelessWindowHint);//隐藏边框
  3. //构建最小化、最大化、关闭按钮
  4. minButton = new QToolButton(this);
  5. closeButton= new QToolButton(this);
  6. maxButton= new QToolButton(this);
  7. //获取最小化、关闭按钮图标
  8. QPixmap minPix = style()->standardPixmap(QStyle::SP_TitleBarMinButton);
  9. QPixmap closePix = style()->standardPixmap(QStyle::SP_TitleBarCloseButton);
  10. maxPix = style()->standardPixmap(QStyle::SP_TitleBarMaxButton);//最大化需要在事件中进行判断更换图标所以设置成数据成员
  11. //设置最小化、关闭按钮图标
  12. minButton->setIcon(minPix);
  13. closeButton->setIcon(closePix);
  14. maxButton->setIcon(maxPix);
  15. //设置最小化、关闭按钮在界面的位置
  16. int wide = width();//获取界面的宽度
  17. minButton->setGeometry(wide-65,5,20,20);
  18. closeButton->setGeometry(wide-25,5,20,20);
  19. maxButton->setGeometry(wide-45,5,20,20);
  20. //设置鼠标移至按钮上的提示信息
  21. minButton->setToolTip(tr("最小化"));
  22. closeButton->setToolTip(tr("关闭"));
  23. maxButton->setToolTip(tr("最大化"));
  24. //设置最小化、关闭按钮的样式
  25. minButton->setStyleSheet("background-color:transparent;");
  26. closeButton->setStyleSheet("background-color:transparent;");
  27. maxButton->setStyleSheet("background-color:transparent;");
  28. //每个按钮对应的信号槽
  29. connect(closeButton, SIGNAL(clicked()), this, SLOT(windowclosed()));
  30. connect(minButton, SIGNAL(clicked()), this, SLOT(windowmin()));
  31. connect(maxButton, SIGNAL(clicked()), this, SLOT(winmax()));

 槽函数

  1. public slots:
  2. void windowclosed();//最小化 关闭
  3. void windowmin();
  4. void winmax();
  5. //槽函数实现
  6. void Logwin::windowclosed()
  7. {
  8. this->close();
  9. }
  10. void Logwin::windowmin()
  11. {
  12. this->showMinimized();//最小化
  13. }
  14. void Logwin::winmax()
  15. {
  16. if (this->isMaximized())
  17. {
  18. this->showNormal();//还原事件
  19. maxPix = style()->standardPixmap(QStyle::SP_TitleBarMaxButton);
  20. maxButton->setIcon(maxPix);
  21. maxButton->setToolTip(tr("最大化"));
  22. }
  23. else
  24. {
  25. this->showMaximized();//最大化事件
  26. restore = style()->standardPixmap(QStyle::SP_TitleBarNormalButton);
  27. maxButton->setIcon(restore);
  28. maxButton->setToolTip(tr("最大化还原"));
  29. }
  30. }

实现的效果

未放大时,鼠标移到最大化按钮上

 放大时,鼠标移到上面,图标不同,内容也不同

 

QStyle::StandardPixmap枚举

获取的图标信息,如果觉得系统给的不好看,可以自己添加

 参考QStyle(4):StandardPixmap和StyleHint枚举_hyongilfmmm的博客-CSDN博客

感谢观看!!!!

以上就是全部内容,如果对您有帮助,欢迎点赞评论,或者发现有哪里写错的,欢迎指正!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/95013
推荐阅读
相关标签
  

闽ICP备14008679号