首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使QWebEngineView成为全屏[QT5.8]

如何使QWebEngineView成为全屏[QT5.8]
EN

Stack Overflow用户
提问于 2017-03-28 19:39:41
回答 2查看 3.2K关注 0票数 0

我有下面的代码,我想让我的QWebEngineView (QT5.8)变成全屏。我的WebView类位于QTabWidget下面,所以它只是填充选项卡,而不是整个屏幕。怎样才能让它全屏化呢?

代码语言:javascript
复制
class WebView:public QObject{
    void acceptFullScreen(QWebEngineFullScreenRequest request){
        request.accept();
    }

public:
    char* home_page;
    QWebEngineView* view=new QWebEngineView();
    WebView(char* page=(char*)"file:///home/tarptaeya/Desktop/Crusta_Prototype_python/about.html"){
        this->home_page=page;
        createWebView();
        this->view->settings()->setAttribute(QWebEngineSettings::FullScreenSupportEnabled,true);
        this->view->settings()->setAttribute(QWebEngineSettings::PluginsEnabled,true);
        this->view->settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows,true);
        connect(this->view->page(),&QWebEnginePage::fullScreenRequested,this,&WebView::acceptFullScreen);
    }
    void createWebView(){
        this->view->load(QUrl(this->home_page));
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-29 07:12:21

如果您的小部件在一个选项卡内,那么它就不能直接成为全屏。你有两个选择:

  • 当您想使它成为全屏时(例如,如果您有一个全屏按钮),将它从选项卡中删除,并使它成为一个独立的小部件。退出全屏模式时,将其插入QTabWidget中。
  • 使QTabWidget完成屏幕。

在这两种情况下,您都可以使用这样的方法使其占据整个屏幕:

代码语言:javascript
复制
// Replace the 0 with the screen index
const auto windowGeometry = qApp->desktop()->availableGeometry(0);
widget.move(windowGeometry.topLeft());
widget.resize(windowGeometry.size());

它将完成屏幕,但将保持任务栏可见(根据我的经验,这是强烈推荐的,这样用户就可以很容易地切换到其他任务)。如果您想要覆盖它,只需使用geometry()而不是availableGeometry()方法。

编辑在这两种情况下,小部件将具有windows管理器框架。如果要删除它,可以尝试设置Qt::FramelessWindowHint标志。考虑到删除框架也可能使某些操作不可用(至少在Windows上),例如移动、调整大小、抓取.

票数 2
EN

Stack Overflow用户

发布于 2017-03-29 12:07:11

我找到了一种方法来做到这一点,所以我回答了我自己的问题:我可以将acceptFullScreen函数更改为:

代码语言:javascript
复制
void acceptFullScreen(QWebEngineFullScreenRequest request){
        if(request.toggleOn()){
            request.accept();
            QWidget* w=(QWidget*)this->view->parent();
            this->layout=w->layout();
            this->layout->removeWidget(this->view);
            this->view->setParent(0);
            this->view->showFullScreen();
        }
        else{
            request.accept();
            this->layout->addWidget(this->view);
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43078450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档