У меня есть следующий код, и я хочу сделать мой 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), такие как перемещение, изменение размера, привязка …
Я нашел способ сделать это, поэтому я отвечаю на свой вопрос:
Я могу изменить acceptFullScreen
функционировать как:
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);
}