精华内容
下载资源
问答
  • Qt窗口全屏显示

    千次阅读 2019-06-10 16:56:05
    一,Qt全屏显示相关函数 1,全屏显示函数 QWidget::showFullScreen(); // 此方法只对顶级窗口有效,对子窗口无效 2,恢复显示函数 QWidget::showNormal(); // 此方法也只对顶级窗口有效,对子窗口无效 3,最小化...

    一,Qt全屏显示相关函数

    1,全屏显示函数

    QWidget::showFullScreen(); // 此方法只对顶级窗口有效,对子窗口无效

    2,恢复显示函数

    QWidget::showNormal(); // 此方法也只对顶级窗口有效,对子窗口无效

    3,最小化显示函数

     QWidget::showMinimized();

    4,最大化显示函数

    QWidget::showMaximized();

    5,设置窗口类型

    QWidget::setWindowFlags(Qt::WindowFlags);

     

    二,子窗口全屏显示

    Qt中的窗口QWidget成员函数showFullScreen,可以将窗口全屏显示,但是只是对窗口模式有用,而且窗口必须是顶级窗口,调用isTopLevel判断窗口是否为顶级窗口。

    如何让子窗口成为顶级窗口呢?只需要将窗口QWidget的父窗口设置为nullptr,同时调用SetWindowFlags(Qt::Dialog);或setWindowFlags(Qt::Window)。若没有调用setParent(nullptr),只是调用了SetWindowFlags(Qt::Dialog)或者SetWindowFlages(QT::Window),则子窗口只会从主窗口中分离出来,但是子窗口并不会全屏显示,即showFullScreen调用是失败的,这一点尤其需要注意。

    全屏显示过程如下:

    void FormPageEdit::AMFullScreen()
    {
        m_pFormPage->removeFormPageEdit();
    
        setWindowFlags(Qt::Window);
        showFullScreen();
    }

     这里FormPageEdit是继承QWidget的一个子窗口,m_pFormPage是主窗口,在出窗口中定义了一个

    QStackedWidget,调用ui->stackedWidgetPage->addWidget(m_pFormPageEdit);将子窗口添加到stackedWidgetPage中,我们全屏显示时,需要将子窗口的父类置为nullptr
    void FormPage::removeFormPageEdit()
    {
        ui->stackedWidgetPage->removeWidget(m_pFormPageEdit);
    }

    如上代码,调用removeWidget则从stackedWidgetPage中移除了子窗口,同时子窗口的父类就为nullptr了。

    三,子窗口全屏恢复显示

    子窗口全屏显示恢复是个相反的过程,首先将子窗口类型的设置为子窗口类型(之前已经被设置为窗口了),然后调用showNormal(),这里的showNormal对子窗口类型有效,然后恢复子窗口的父窗口,也就是将子窗口重新添加到stackedWidgetPage中。

    void FormPageEdit::AMNormalScreen()
    {
        showNormal();
        setWindowFlags(Qt::SubWindow);
    
        m_pFormPage->setFormPageEdit();
    }
    
    void FormPage::setFormPageEdit()
    {
        ui->stackedWidgetPage->addWidget(m_pFormPageEdit);
        ui->stackedWidgetPage->setCurrentWidget(m_pFormPageEdit);
    }

    四,注意事项

    一定要清楚子窗口的父窗口是谁,上面的代码,如果直接创建子窗口时,直接保存子窗口的父窗口,然后再全屏,这样会有问题的,具体问题就是子窗口一直显示的很大(已经在父窗口内显示了,但是界面还是很大),具体原因就是没用调用stackedWidgetPage->addWidget函数,正确的方式是添加或者移除父窗口是应该调用stackedWidgetPage的成员函数操作,而不是直接给子窗口的父窗口的指针。

     

    五,多屏全屏显示问题

    我的电脑是双屏,一个只主屏幕,一个是扩展屏幕,默认全屏模式,全屏窗口只会显示在主显示屏上,那么如何控制窗口全屏在哪个显示屏上呢?

    // 全屏显示
    void FormPageEdit::AMFullScreen()
    {
        m_pFormPage->removeFormPageEdit();
    
        setWindowFlags(Qt::Window);
    
        QDesktopWidget *desktop = QApplication::desktop();
        int screen_count = desktop->screenCount(); // 获取显示屏个数
        int prim_screen = desktop->primaryScreen(); // 获取主显示屏编号
    
        // QWidget *parentDesktop  = desktop -> screen(prim_screen); // 主屏显示
        QWidget *parentDesktop  = desktop -> screen(1); // 扩展屏幕显示
        this->setParent(parentDesktop);
    
        showFullScreen();
    }

    如上,这里我们获取显示屏的个数,然后设置子窗口的父窗口,如果设置为主屏幕ID,则全屏在主屏幕显示,如果设置为扩展屏幕ID,则在扩展屏幕进行显示。

    扩展屏幕全屏效果:

    从这里其实可以看出,默认父窗口为nullptr,其实系统会默认将主屏幕的窗口作为子窗口的父窗口来设置。

    如果需要主屏和扩展屏幕全部全屏显示呢?

    这个留给读者自己思考了,需要源码的可以私信给我。

     

    各位看官,有钱的捧个钱场,没钱的捧个人场。

    展开全文
  • QT中关于窗口全屏显示与退出全屏的实现 近期在学习QT时遇到了很多问题这也是其中一个,个人通过在各种书籍和网络上的查阅找到了一些关于这方面的答案,希望能给大家一些帮助。 首先,在QT中对于窗口显示常用的有...

    QT中关于窗口全屏显示与退出全屏的实现

    近期在学习QT时遇到了很多问题这也是其中一个,个人通过在各种书籍和网络上的查阅找到了一些关于这方面的答案,希望能给大家一些帮助。

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


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

    但是 showFullScreen()只对顶级窗口有效果,对子窗口无效;
    setWindowFlags (Qt::Window | Qt::FramelessWindowHint);第一个参数表示此控件是窗口类型,第二个表示去除边框,状态栏,没有框架。其实与showFullScreen() 函数的原理差不多。


    其次要将子窗口全屏显示可用以下方法:
            将要全屏的Qt主窗口中的子窗口调用函数setWindowFlags(Qt::Dialog),或者调用setWindowFlags(Qt::Window)将其类型提升为顶级窗口模式,然后调用showFullScreen()函数将子窗口全屏显示。也就是先将子窗口全屏显示前设置为顶级窗口,然后进行全屏显示,注意顺序不能颠倒。因为showFullScreen()函数只对顶级窗口有效。
            当然全屏后还要恢复正常,即调用setWindowFlags(Qt::subwindow),或者setWindowFlags(Qt::Dialog),将子窗口设置为非顶级窗口,再调用showNormal()还原子窗口显示。直接调用mywindow.resize(x,y)是没有效果的。注意函数的调用顺序不能颠倒,否者不会还原。原因很简单,因为showNormal()也只对顶级窗口有效。所以必须将它设为非顶级窗口再调用。
            你如果需要知道屏幕的高宽可以调用以下函数:
              QApplication::desktop ()->height();
            QApplication::desktop ()->width();
    例如:
           全屏显示:
           VideoWidget->setWindowFlags (Qt::Window);
           VideoWidget->showFullScreen ();
           退出全屏时:
        VideoWidget->setWindowFlags (Qt::SubWindow);
           VideoWidget->showNormal ();
          退出全屏时你可以有鼠标右键单击屏幕弹出菜单获得,也可以捕获键盘事件获得如:
          keyPressEvent(QKeyEvent *keyset)
         {
          if(keyset->key()==Qt::Key_Escape){
               VideoWidget->setWindowFlags (Qt::SubWindow);
               VideoWidget->showNormal ();
         }

    展开全文
  • Qt窗口全屏方法

    万次阅读 2019-02-14 14:08:30
    方法一 使用showFullScreen方法显示全屏 示例: QWidget w; w.showFullScreen(); ...使用setWindowState方法设置 ...w.setWindowState(w.windowState() ^ Qt::WindowFullScreen);...设置子窗口全屏需要遵...

    方法一

    • 使用showFullScreen方法显示全屏
    • 示例:
    QWidget w;
    w.showFullScreen();
    

    方法二

    • 使用setWindowState方法设置
    • 示例:
    QWidget w;
    w.setWindowState(w.windowState() ^ Qt::WindowFullScreen);
    w.show();
    

    注意事项

    • 适合于父窗口;
    • 设置子窗口全屏需要遵循父窗口全屏.
    展开全文
  • Qt窗口全屏或控件全屏

    万次阅读 热门讨论 2016-11-23 20:32:51
    Qt全屏显示 Qt控件全屏

    来源,常见的视频播放器画面窗口在还是整体的一部分,当双击时会全屏播放,这里解决全屏显示的问题,关于捕获鼠标时间见博文
    事件过滤器
    鼠标事件

    使用方法

    QT中窗口部件QWidget成员函数showFullScreen(); 是用于将窗口部件全屏显示,但是它只对窗口模式的部件有用。子窗口的特征是Qt::SubWindow,不是独立的窗口。因此对其调用showFullScreen()无效。

    子窗口全屏方法

    通过对对子窗口调用:setWindowFlags(Qt::Dialog);setWindowFlags(Qt::Window);将其设为窗口模式后,即可调用showFullScreen();进行全屏显示了。注意顺序不能颠倒。因为showFullScreen()函数只对顶级窗口有效。

    全屏后如何退出

    1. 先调用setWindowFlags(Qt::Dialog);或者setWindowFlags(Qt::SubWindow);在调用move和resize函数。
    2. 调用showNormal(),再调setWindowFlags(Qt::SubWindow)。注意函数的调用顺序不能颠倒,否者不会还原。原因很简单,因为showNormal()也只对顶级窗口有效。所以必须将它设为非顶级窗口再调用。

    MFC中,子窗口退出全屏的方法简单直接,直接调用SetWindowPos()函数将子窗口显示到预定的位置即可。
    QT中,直接使用move和resize对窗口定位是没有效果的。需要先将子窗口设位非窗口模式。之后再将窗口移到理想位置。

    退出全屏时,调用showNormal(),再调setWindowFlags(Qt::SubWindow)。
    这有两个问题:1)showNormal()也是只对顶级窗口有效。2)可以考虑先调用showNormal()将窗口设为原来大小,在将窗口设为子窗口模式。但这样窗口回到父窗口之中也不会显示原来的大小。

    关于窗口的函数

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

    示例

    • 示例一

    全屏显示:

           VideoWidget->setWindowFlags (Qt::Window);
           VideoWidget->showFullScreen ();

    退出全屏时:

        VideoWidget->setWindowFlags (Qt::SubWindow);
           VideoWidget->showNormal ();
    • 示例二
    //播放窗口全屏
    bool HIK_Record::frameFullScreen()
    {
        //判断窗口当前状态,在选择是全屏还是退出全屏
        if(ui->frame->isFullScreen()){  
            ui->frame->setWindowFlags(Qt::SubWindow);
            ui->frame->showNormal();
        }else{
            ui->frame->setWindowFlags(Qt::Window);
            ui->frame->showFullScreen();
        }
        return true;
    }

    链接

    事件过滤器
    http://blog.csdn.net/jh1513/article/details/53311084
    鼠标时间的捕获
    http://blog.csdn.net/jh1513/article/details/53311122

    展开全文
  • 近期在学习QT时遇到了很多问题这也是其中...Qt全屏显示函数 showFullScreen() Qt最大化显示函数 showMaximized() Qt最小化显示函数 showMinimized() Qt固定尺寸显示函数 resize(x,y) Qt设置最大尺寸函数 setMaximumSiz
  • 需求:界面比较大需要全屏显示 mainWin.showMaximized(); 需求:多屏显示 QDesktopWidget* desktop = QApplication::desktop(); int N = desktop->screenCount(); //获取当前显示器的个数 //if(N>1) 加了{}就不...
  • 首先感谢CSDN的“望那伊人”博主,他在https://blog.csdn.net/u012611644/article/details/90671364写得已经很清楚很明了了,我主要说明QLabel子窗口全屏显示模式下按键事件不能接收的解决方法。 QLabel是不能直接...
  • 现在只做了三个功能键:全屏、退出全屏、播放。 下面看代码: 三个信号与槽控制对应上面三个功能 QObject::connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(display_main())); //播放 QObject::connect(ui...
  • void VideoWindow::doFullScreen() { m_rect = geometry();... setWindowFlags(Qt::Window); showFullScreen(); } void VideoWindow::doExitFullScreen() { setWindowFlags(Qt::SubWindow); show...
  • QT 全屏显示窗口

    2016-11-22 13:50:08
    QT 全屏显示窗口QT全屏显示窗口的方法 QT窗口部件 QWidget 成员函数 showFullScreen();是用于将窗口部件全屏显示 但是他只对窗口模式的部件有用。子窗口的特征是 Qt::SubWindow不是独立的窗 口。因此对其...
  • QT4.6 ToolBar浮动停靠,窗口全屏显示

    热门讨论 2010-06-04 18:17:13
    QT4.6 ToolBar浮动停靠,窗口全屏显示 在QDockWidget上添加QToolBar
  • qt 窗体全屏显示

    千次阅读 2017-12-19 01:47:58
    QT中对于窗口显示常用的有...Qt全屏显示函数 showFullScreen()  Qt最大化显示函数 showMaximized() Qt最小化显示函数 showMinimized() Qt固定尺寸显示函数 resize(x,y) Qt设置最大尺寸函数 setMaximumSize
  • 近期在学习QT时遇到了很多问题这也是...首先,在QT中对于窗口显示常用的有这么几个方法可以调用:Qt全屏显示函数 showFullScreen() Qt最大化显示函数 showMaximized()Qt最小化显示函数 showMinimized()Qt固定尺...
  • QGridLayout *mainLayout =new QGridLayout(this);  mainLayout -> addWidget(tree, 0, 0);  mainLayout -> addWidget(stackedWidget, 0, 1);    mainLayout -&... ...
  • QT全屏显示

    2020-12-10 10:37:53
    QT实现全屏显示前言示例1. 前言 由于初次接触QT,现需写一个与西门子PLC通讯和控制的项目,想将界面全屏显示,在网上搜索了很多办法,都达不到我想要的效果,经结合网上的许多办法,从而得出一个对我来说比较满意的...
  • Qt使窗口变为全屏

    2019-08-27 17:46:45
    Qt全屏显示函数 showFullScreen() Qt最大化显示函数 showMaximized() Qt最小化显示函数 showMinimized() Qt固定尺寸显示函数 resize(x,y) Qt设置最大尺寸函数 setMaximumSize(w,h) Qt设置最...
  • 近期在学习QT时遇到了很多问题这也是其中一个,个人通过在各种书籍和网络上的查阅找到了一些关于这方面的答案...Qt全屏显示函数showFullScreen() Qt最大化显示函数 showMaximized() Qt最小化显示函数 showMinimized...
  • QT全屏显示窗口的方法

    千次阅读 2015-03-05 11:16:49
    QT全屏显示窗口的方法: QT窗口部件QWidget成员函数showFullScreen();是用于将窗口部件全屏显示,但是他只对窗口模式的部件有用。子窗口的特征是Qt::SubWindow,不是独立的窗口。因此对其调用showFullScreen...
  • Qt窗口全屏和退出全屏的方法

    千次阅读 2017-11-24 19:00:20
    附上代码,实测有效,并且窗口退出全屏之后,保持原来的位置 void MyPlayer::mouseDoubleClickEvent(QMouseEvent *event) { Q_UNUSED(event); if(this->isFullScreen()){ //全屏状态,切换到非全屏状态 this...
  • QT窗口全屏显示与还原问题

    千次阅读 2014-01-08 18:16:40
    //子窗口全屏显示 vws->setWindowFlags(Qt::Dialog);vws->showFullScreen();之后窗口还原时调用this->showNormal(); //对顶级窗口有效this->setWindowFlags(Qt::SubWindow);看似成功还原窗口,但是发现周围有的按钮...
  • 最大化显示 setWindowState(Qt::WindowMaximized); PS:其它待更新
  • Qt 实现无边框窗口,可以自由缩放窗口尺寸,QT5.8+MinGW编译通过,运行效果见博客分类“Qt实用技术”中关于无边框窗口的实现文章。
  • 本问将介绍如何利用Qt实现高亮弹窗效果(窗口亮度调节,注意,不是透明度),即在弹出窗口时,主窗口亮度变暗,弹出窗口高亮显示(其实弹出窗口是正常显示的,只是背景变暗了,突出显示了弹窗)下面是动态显示效果图...
  • 第三方程序在qt容器内部实现全屏,不是子窗口全屏 现在有个需求在一个窗口中显示多个子窗口 其中一个子窗口是第三方软件,需要全屏显示。 现在一点全屏,软件会沾满整个屏。 需要的效果是只沾满他自己的...
  • 开发系统win10,编译工具Visual Studio2013,插件Qt Creator5.5.1,窗口自适应屏幕分辨率
  • qt 全屏窗口有边框If you’re a regular PC gamer, you know that playing a game in full screen mode can sometimes be a frustrating experience. Switching to a background program, using a second monitor, ...
  • Qt 全屏时弹窗、菜单和提示框不显示的问题
  • qt 窗口无法全屏

    千次阅读 2009-08-12 23:26:00
    今天终于将QT窗口全屏的事搞定。思路是这样的: 将要全屏的QT主窗口中的子窗口调用函数setWindowFlags(Qt::Dialog),然后调用showFullScreen()将子窗口全屏显示,也就是先将子窗口设为顶级窗口,然后全屏显示,...
  • Qt实现窗口靠边半屏,靠顶全屏的效果

    千次阅读 热门讨论 2020-06-27 19:29:54
      实现一个继承自QWidget的类,我们就叫MuWinWindow,然后设置无边框setWindowFlags(Qt::FramelessWindowHint);然后实现bool MuWinWindow::nativeEvent(const QByteArray &eventType, void *message, long *...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,364
精华内容 1,345
关键字:

qt窗口全屏显示