• Qt的窗口的设置


    窗口外部设置 

    Qt::WindowFlags

    Qt::WidgetQWidget默认窗口,没有父窗口的话,是一个独立窗口
    Qt::Window是一个窗口,有窗口边框和标题
    Qt::Dialog是一个对话框窗口
    Qt::Sheet是一个窗口或部件Macintosh表单(sheet)
    Qt::Drawer是一个窗口或部件Macintosh抽屉
    Qt::Popup是一个弹出式顶层窗口
    Qt::Tool是一个工具窗口
    Qt::ToolTip是一个提示窗口,没有标题栏和窗口边框
    Qt::SplashScreen是一个欢迎窗口,是QSplashScreen构造函数的默认值
    Qt::Desktop是一个桌面,是QDesktopWidget构造函数的默认值
    Qt::SubWindow一个子窗口

    对话框的控件:

    Qt::MSWindowFiredSizeDialogHintWindows系统上的窗口装饰,通常用于提示固定大小的对话框
    Qt::MSWindowsOwnDCWindows系统上的窗口添加自身的显示上下文
    Qt::FramelessWindowHint产生一个无窗口边框的窗口,用户无法移动或改变大小
    Qt::CustomizeWindowHint关闭默认窗口标题提示
    Qt::WindowTitleHint为窗口修饰一个标题栏
    Qt::WindowSystemMenuHint为窗口修饰一个窗口菜单系统
    Qt::WindowMinimizeButtonHint为窗口添加最小化按钮
    Qt::WindowMaximizeButtonHint为窗口添加最大化按钮
    Qt::WindowMinMaxButtonsHint为窗口添加最大化和最小化按钮
    Qt::WindowCloseButtonHint窗口只有一个关闭按钮
    Qt::WindowStaysOnTopHint把窗口置前

     使用方法:

    • 使用setWindowFlage() 使用
    • 添加窗口部件使用: |
    • 去除窗口使用部件:& ~

    1.生成一个无窗口边框的窗口 

    1. Widget::Widget(QWidget *parent)
    2. : QWidget(parent)
    3. , ui(new Ui::Widget)
    4. {
    5. ui->setupUi(this);
    6. resize(200,200);//设置窗口大小
    7. setWindowFlag(Qt::FramelessWindowHint);
    8. }

     

    2.去除放大缩小按键 

    1. Widget::Widget(QWidget *parent)
    2. : QWidget(parent)
    3. , ui(new Ui::Widget)
    4. {
    5. ui->setupUi(this);
    6. resize(200,200);//设置窗口大小
    7. //setWindowFlag(Qt::FramelessWindowHint);
    8. setWindowFlags(windowFlags()& ~Qt::WindowMinMaxButtonsHint);//去除最大化窗口
    9. }

     3.在一个新建控件上的使用

    1. QWidget *widget1=new QWidget(0,Qt::FramelessWindowHint);//0,代表无父类
    2. resize(300,200);//设置窗口大小
    3. widget1->show();

    设置窗口初始状态状态:

    QWidget中使用setWindowState()来设置窗口的状态 

    函数用法
    Qt::WindowMaximized最大化
    Qt::WindowMinimized最小化
    Qt::WindowFullScreen全屏显示
    Qt::WindowActive活动窗口
    Qt::WindowNoState默认情况

    1. 初始化状态为最大化:

    1. setWindowFlags(windowFlags()& ~Qt::WindowMinMaxButtonsHint);//去除最大化窗口
    2. setWindowState(Qt::WindowMaximized);//初始状态最大化

     占满全屏:

     2.默认最小化

    1. setWindowFlags(windowFlags()& ~Qt::WindowMinMaxButtonsHint);//去除最大化窗口
    2. setWindowState(Qt::WindowMinimized);//初始状态最小化

    直接放到后台:(因为我没设置窗口最小值 )

     

     窗口的几何布局:

    窗口的坐标:

    不包含框架的长宽的获取:

    • width()、height()
    • gemometry().width()、gemometry().height()

     包含框架的长宽的获取:

    • frameGeometry().widget()
    • frameGeometry().height() 

     不包含框架的坐标设置:

    • geometry().x()
    • geometry().y()
    • geometry()

     包含框架的坐标设置:

    • x()
    • y()
    • pos()

    常用的一些窗口函数 :

    窗口函数功能
    setWindowTitle()设置窗口标题
    resize()设置窗口大小
    move()移动窗口(含框架)
     setFixedSize()固定窗口大小
    hide()

    隐藏窗口

    show()显示窗口(非模态)
    close()关闭窗口
    showMinimized()最小化
    showMaximized()最大化
    showNormal()恢复原状

    例子: 

    1. setWindowTitle("一个窗口");//设置窗口标题
    2. setFixedSize(300,300);//固定窗口大小
    3. QPushButton *pu=new QPushButton(this);
    4. pu->move(100,100);//把该控件移到100100

     去除边框实现最小化和最大化,关闭,恢复原状功能

    1. Widget::Widget(QWidget *parent)
    2. : QWidget(parent)
    3. , ui(new Ui::Widget)
    4. {
    5. ui->setupUi(this);
    6. resize(600,600);//设置窗口大小
    7. setWindowTitle("一个窗口");//设置窗口标题
    8. setWindowFlags(Qt::FramelessWindowHint);//去除窗口边框
    9. QPushButton *pu0=new QPushButton(this);//最小化
    10. QPushButton *pu1=new QPushButton(this);//最大化
    11. QPushButton *pu2=new QPushButton(this);//关闭
    12. QPushButton *pu3=new QPushButton(this);//恢复初始状态
    13. pu0->move(100,100);//把该控件移到100100
    14. pu1->move(100,200);//把该控件移到100200
    15. pu2->move(100,300);//把该控件移到100300
    16. pu3->move(100,400);//把该控件移到100400
    17. pu0->setText("最小化");
    18. pu1->setText("最大化");
    19. pu2->setText("关闭");
    20. pu3->setText("恢复原状");
    21. connect(pu0,&QPushButton::clicked,this,&QWidget::showMinimized);//点击按钮最小化
    22. connect(pu1,&QPushButton::clicked,this,&QWidget::showMaximized);//点击按钮最大化
    23. connect(pu2,&QPushButton::clicked,this,&QWidget::close);//关闭窗口
    24. connect(pu3,&QPushButton::clicked,this,&QWidget::showNormal);//恢复原状
    25. }

    不方便展示,这里就不展示了。

    使用无边框的窗口时,如果设置关闭按键的话,需要强制关闭进程。

    1.运行程序

    2.点击应用程序输出

    3.点击关闭按键 ,就可以强制退出程序

  • 相关阅读:
    动手实践一下NodeJS事件驱动架构,流和模块
    Python中的类【详谈】
    Spring Boot中Node.js的下载与Vue CLI在IDEA中的部署及使用(图文解释 简单易懂)
    【深度学习】特征图的上采样(nn.Upsample)和转置卷积(nn.ConvTranspose2d) | pytorch
    Docker部署Nginx-常用命令
    【深度学习】yolov5 tag7.0 实例分割 从0到1的体会
    谣言检测论文精读——3.Detect Rumor and Stance Jointly by Neural Multi-task Learning
    【BLE蓝牙学习开发笔记】安利一款简单好用且高性价比的BLE蓝牙抓包器
    springcloud之nacos服务治理
    【linux】自定义nameserver
  • 原文地址:https://blog.csdn.net/qq_45303986/article/details/127667665