c++ - 如何让 QWebEngineView 进入全屏 [Qt 5.8]

标签 c++ qt fullscreen qtwebengine qt5.8

我有以下代码,我想让我的 QWebEngineView (Qt 5.8) 全屏显示。我的 WebView 类在 QTabWidget 下,所以它只是填满选项卡而不是整个屏幕。我怎样才能让它全屏显示?

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));
    }
}

最佳答案

如果您的小部件位于选项卡内,则无法直接全屏显示。您有两个选择:

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

在这两种情况下你都可以使用这样的东西让它占据整个屏幕:

// Replace the 0 with the screen index
const auto windowGeometry = qApp->desktop()->availableGeometry(0);
widget.move(windowGeometry.topLeft());
widget.resize(windowGeometry.size());

它会填满屏幕,但会保持任务栏可见(根据我的经验,强烈推荐这样做,这样用户可以轻松切换到其他任务)。如果要覆盖它,只需使用 geometry() 而不是 availableGeometry() 方法即可。

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

关于c++ - 如何让 QWebEngineView 进入全屏 [Qt 5.8],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43078450/

相关文章:

C++ - 在类外或类内声明枚举时的性能?

c++ - 使用 C++ 库 GLEW 在 openGl 中绘制一个红色三角形

c++ - Qt - 为什么无法使用带有从 FileDialog 获取的目录的 QFile 读取文件?

c++ - Qt 生成 Key Press(keyboard) to the system(OF) 一种跨平台的方式

javascript - 在 youtube API 上禁用全屏 - javascript

c++ - NonCopyable 和 NonMovable 等接口(interface)是否应该提供虚拟析构函数?

c++ - 当键是对象的一部分时最合适的关联 STL 容器 [C++]

c++ - 如何减小 qtgui4.dll 的大小?

python - 用pyqt4全屏?

android - 在 Android 中退出全屏后,嵌入式 IFRAME 视频继续在后台播放