• Qt 窗口操作函数(置顶、全屏,最大化最小化按钮设置等)


    一、窗口置顶 与 取消置顶

    void MainWindow::on_windowTopButton_clicked()
    {
      if (m_flags == NULL)
      {
        m_flags = windowFlags();
        setWindowFlags(m_flags | Qt::WindowStaysOnTopHint);
        this->show();
      }
      else
      {
        m_flags = NULL;
        setWindowFlags(m_flags);
        this->show();
      }
    }
    

    二、全屏显示 与 退出全屏

    首先,在QT中对于窗口显示常用的有这么几个方法可以调用:

    showFullScreen() // Qt全屏显示函数
    showMaximized() // Qt最大化显示函数
    showMinimized() // Qt最小化显示函数
    resize(x, y) // Qt固定尺寸显示函数
    setMaximumSize(w, h) // Qt设置最大尺寸函数
    setMinimumSize(w, h) // Qt设置最小尺寸函数
    

    但是 showFullScreen()showNormal() 只对顶级窗口有效果,对子窗口无效。要将子窗口全屏显示可用以下方法:

    • 将要全屏的 Qt 子窗口调用 setWindowFlags(Qt::Window) 将其类型提升为顶级窗口模式,然后调用 showFullScreen() 函数将子窗口全屏显示。
    • 当然全屏后还要恢复正常,即调用 setWindowFlags(Qt::subwindow) 将子窗口设置为非顶级窗口,再调用 showNormal() 还原子窗口显示。
    // 全屏显示:
    VideoWidget->setWindowFlags(Qt::Window);
    VideoWidget->showFullScreen();
    
    // 退出全屏时:
    VideoWidget->setWindowFlags(Qt::SubWindow);
    VideoWidget->showNormal();
    

    三、窗口的 "最大化最小化关闭" 按钮设置

    1、在 QDialog 中添加 "最大化" 和 "最小化"按钮

    在使用 QDialog 时,默认情况下只有 “这是什么” 和 “关闭” 按钮,但是我们习惯有最大化和最小化按钮。这里介绍如何在该模式下如何设置。

    this->setWindowFlags(Qt::Dialog | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);
    

    其中 WindowMinMaxButtonsHint 设置的就是最大和最小按钮,但是只这样设置,关闭按钮就不可用了,因此需要再添加 WindowCloseButtonHint 一项。


    2、只禁止最大化按钮

    this->setWindowFlags(windowFlags() &~ Qt::WindowMaximizeButtonHint);
    

    Qt::WindowMaximizeButtonHintWindowType 枚举变量,通过修改它可以选择禁止 "最小化" 或者 "关闭" 按钮。


    四、禁止拖动窗口大小

    this->setFixedSize(this->width(),this->height());
    

    五、获取屏幕的宽度和高度

    QApplication::desktop()->width();
    QApplication::desktop()->height();
    

    即得到屏幕分辨率,如 1024*768。


  • 相关阅读:
    停滞的代码
    民兵葛二蛋大结局
    该开始BS了
    今天写出了第一个.NetBS应用
    读源码,仿照
    MVN,老天怎么回事?
    从哪里入手
    学习Java了
    工厂方法模式与简单工厂
    转:悟透JavaScript
  • 原文地址:https://www.cnblogs.com/linuxAndMcu/p/11533636.html
Copyright © 2020-2023  润新知