• QT关于界面常用设置


    1 .设置界面尺寸

    1.1设置默认尺寸,界面可拉伸
    设置默认宽和高:
    法一、this->setGeometry(x,y,w,h);
    法二、this->resize(w,h);

    1.2 设置界面默认全屏:
    this->setWindowState(Qt::WindowMaximized);

    1.3 设置最小尺寸,鼠标拉伸到最小值后,无法再变小
    设置最小宽度:   this->setMinimumWidth(w);
    设置最小宽和高:this->setMinimumSize(w,h);


    1.4 设置最大尺寸,鼠标拉伸到最大值后,无法再变大
    设置最大宽度:    this->setMaximumHeight(h);
    设置最大宽和高:this->setMaximumSize(w,h);


    1.5 设置固定尺寸,界面不可拉伸
    设置固定宽:       this->setFixedWidth(w);
    设置固定高:       this->setFixedHeight(h);
    设置固定宽和高:this->setFixedSize(w,h);
     

    2.设置界面位置

    1. 法一:this->move(x,y);
    2. 法二:this->setGeometry(x,y,w,h);

    3.设置界面标题栏

    1. 3.1 隐藏标题栏
    2. this->setWindowFlag(Qt::FramelessWindowHint);
    3. 3.2 隐藏最小化按钮和最大化按钮
    4. this->setFixedSize(windowFlags()&~Qt::WindowMinMaxButtonsHint);
    5. 3.3 隐藏最小化按钮,但不隐藏最大化按钮
    6. this->setFixedSize(windowFlags()&~Qt::WindowMinMaxButtonsHint | Qt::WindowMaximizeButtonHint);
    7. 3.4 隐藏最大化按钮,但不隐藏最小化按钮
    8. this->setWindowFlags(windowFlags()&~Qt::WindowMinMaxButtonsHint | Qt::WindowMinimizeButtonHint);

    4.设置界面置顶和置底

    1. this->setWindowFlags(Qt::WindowStaysOnTopHint); //置顶
    2. this->setWindowFlags(Qt::WindowStaysOnBottomHint); //置底

    5.设置程序图标不在任务栏显示

    this->setWindowFlags(Qt::Popup);

    6.设置界面为模态

    即除了该模态界面整个应用程序窗口都无法接受用户响应,处于等待状态,直到模态界面被关闭,常用于模态对话框
    this->setAttribute(Qt::WA_ShowModal,true);
    设置界面自动回收
    setAttribute(Qt::WA_DeleteOnClose);

    1. this->setWindowFlags(Qt::FramelessWindowHint|Qt::Dialog);
    2. this->setWindowModality(Qt::WindowModal);

    7.设置界面背景

    7.1 设置背景透明

     setAttribute(Qt::WA_TranslucentBackground,true);

    7.2 设置背景颜色

    • ① 通过样式设置背景,这里以红色为例
    1. //给这个界面取名字
    2. this->setObjectName("widget");
    3. //如果该界面是子界面,则需要加上
    4. this->setAttribute(Qt::WA_StyledBackground,true);
    5. //red 可以换成 #FF0000 或者rgb(255,0,0)
    6. this->setStyleSheet("QWidget#widget{background-color: red;}");
    • ② 通过QPalette

    1. QPalette pal(this->palette());
    2. pal.setColor(QPalette::Background, Qt::red);
    3. this->setAutoFillBackground(true);
    4. this->setPalette(pal);
    • ③通过绘图事件

    首先在.h文件中,需要添加头文件#include ,并在类中添加
    protected:void paintEvent(QPaintEvent *event);
    然后在.cpp文件paintEvent(QPaintEvent *event)函数中添加:

    1. QPainter p(this);
    2. p.setPen(Qt::NoPen);
    3. p.setBrush(Qt::red);
    4. p.drawRect(rect());

    7.3 设置背景图

    • ①通过样式设置背景图
     setStyleSheet("QWidget#widget{border-image:url(:/1.jpg);}"); 
    • ②通过绘图事件设置背景图

    首先在.h文件中,需要添加头文件#include ,并在类中添加
    protected:void paintEvent(QPaintEvent *event);
    然后在.cpp文件paintEvent(QPaintEvent *event)函数中添加:

    1. //方法1:
    2. QPainter painter(this);
    3. painter.drawPixmap(rect(),QPixmap(":/srvc/moon-4919501_1920.jpg"),QRect());;
    4. //方法2:
    5. QPalette pal(this->palette());
    6. pal.setBrush(QPalette::Background,QBrush(QPixmap(":/1.jpg").scaled(size())));
    7. setPalette(pal);

    8.设置Line颜色

    1. QPalette palette = ui->line->palette();
    2. palette.setColor(QPalette::Dark, QColor (233,233,233));
    3. ui->line->setPalette(palette);
    • 代码
    • .h文件
    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include <QWidget>
    4. #include <QPaintEvent>
    5. QT_BEGIN_NAMESPACE
    6. namespace Ui { class Widget; }
    7. QT_END_NAMESPACE
    8. class Widget : public QWidget
    9. {
    10. Q_OBJECT
    11. public:
    12. Widget(QWidget *parent = nullptr);
    13. ~Widget();
    14. protected:
    15. void paintEvent(QPaintEvent *event);
    16. private:
    17. Ui::Widget *ui;
    18. };
    19. #endif // WIDGET_H
    • .cpp文件
    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. #include <QPushButton>
    4. #include <QPalette>
    5. #include <QPainter>
    6. Widget::Widget(QWidget *parent)
    7. : QWidget(parent)
    8. , ui(new Ui::Widget)
    9. {
    10. ui->setupUi(this);
    11. int x = 0,y = 0,w = 600,h = 600;//x、y分别为界面的横纵坐标,w、h为界面宽和高。
    12. // this->setGeometry(x,y,w,h); //设置默认宽和高
    13. // this->resize(w,h); //设置默认宽和高
    14. // this->setWindowState(Qt::WindowMaximized);//设置界面默认全屏
    15. // this->setMinimumWidth(w); //设置最小宽度
    16. // this->setMaximumHeight(h); //设置最大宽度
    17. // this->setMinimumSize(w,h); //设置最小宽和高
    18. // this->setMaximumSize(w,h); //设置最大宽和高
    19. // this->setFixedWidth(w); //设置固定宽
    20. // this->setFixedHeight(h); //设置固定高
    21. // this->setFixedSize(w,h); //设置固定宽和高
    22. // this->move(x,y); //设置界面位置
    23. // this->setGeometry(x,y,w,h); //设置界面位置
    24. // this-> setWindowFlags(Qt::CustomizeWindowHint);
    25. // this->setWindowFlag(Qt::FramelessWindowHint); //隐藏标题栏
    26. // this->setWindowFlags(windowFlags()&~Qt::WindowMinMaxButtonsHint); //隐藏“-”最小化按钮
    27. // this->setWindowFlags(Qt::WindowMinMaxButtonsHint|Qt::WindowMinimizeButtonHint);//隐藏关闭按钮
    28. // this->setFixedSize(this->width(),this->height()); //隐藏最大化按钮
    29. // this->setWindowFlags(Qt::WindowStaysOnTopHint); //设置界面置顶
    30. // this->setWindowFlags(Qt::Popup); //程序图标不在任务栏显示
    31. // this->setAttribute(Qt::WA_ShowModal,true); //设置为模态
    32. // this->setAttribute(Qt::WA_StyledBackground,true); //如果该界面是子界面,则需要加上此行
    33. // this->setObjectName("widget"); //给这个界面取名字,在此界面中设置了”widget”名字的控件,下面样式设置都会对它生效
    34. // 通过样式设置背景
    35. // this->setStyleSheet("QWidget#widget{background-color: red;}");//red 可以换成 #FF0000 或者rgb(255,0,0)
    36. // 通过QPalette
    37. // QPalette pal(this->palette());
    38. // pal.setColor(QPalette::Background, Qt::red); //设置背景黑色
    39. // this->setAutoFillBackground(true);
    40. // this->setPalette(pal);
    41. // 通过样式设置背景图
    42. // this->setStyleSheet("QWidget#widget{border-image:url(:/srvc/moon-4919501_1920.jpg);}");//通过样式设置背景图
    43. }
    44. Widget::~Widget()
    45. {
    46. delete ui;
    47. }
    48. void Widget::paintEvent(QPaintEvent *event)
    49. {
    50. // 通过绘图事件设置背景色
    51. // QPainter p(this);
    52. // p.setPen(Qt::NoPen);
    53. // p.setBrush(Qt::red);
    54. // p.drawRect(rect());
    55. // 通过绘图事件设置背景图
    56. // 法一:
    57. // QPalette pal(this->palette());
    58. // pal.setBrush(QPalette::Background,QBrush(QPixmap(":/srvc/moon-4919501_1920.jpg").scaled(size())));
    59. // this->setPalette(pal);
    60. // 法二:
    61. // QPainter painter(this);
    62. // painter.drawPixmap(rect(),QPixmap(":/srvc/moon-4919501_1920.jpg"),QRect());
    63. }

  • 相关阅读:
    【无人机】基于SDRE对NPS II无人机进行点对点(调节)控制(Matlab代码实现)
    病人预约的分析
    【mysql为什么采用b+树作为索引】
    Node.js--模块化概念+来源(内置、第三方、自己编写)+如何加载
    [附源码]java毕业设计保险客户管理系统
    品牌连锁店5G/4G无线组网方案
    Java变量---尚硅谷Java入门视频学习
    垃圾分类数据集+垃圾分类识别训练代码(支持googlenet, resnet, inception_v3, mobilenet_v2)
    16. Docker容器监控CAdvisor+InfluxDB+Granfana
    深度学习——BRNN和DRNN
  • 原文地址:https://blog.csdn.net/jiangqin115/article/details/125544178