qt 5 取消了 qws,使用了 QGraphicsView, 这里提供了使用的一些方法,如果有更好的,欢迎大家指正。
方法一:
#include <QGraphicsScene>#include <QGraphicsProxyWidget>#include <QGraphicsView>
MainWindow w;
QGraphicsScene *scene = new QGraphicsScene;
QGraphicsProxyWidget *widget = scene->addWidget(&w, Qt::FramelessWindowHint);
widget->setRotation(90);
QGraphicsView *view = new QGraphicsView(scene);
view->resize(1024, 600);
view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
view->show();
这种, 只能翻转 界面本身和他的子界面。
而且有几个缺点:1, w.close() 函数只能关闭 w, view它关不掉
2,当要翻转对话框时 dlg.exec() , 变得无效了
3,如果界面的子界面 想去掉标题栏 , 翻转之后,又会出现标题栏。到现在还没找到解决方法。
所以有了方法二,想将界面翻转放到界面内。
方法二:
先将界面中的所有控件放到 widget 中 并布局 ,就叫 m_widget_rorate吧, 翻转时就翻转这个widget
this->layout()->removeWidget(ui->m_widget_rorate);
QGraphicsScene *scene = new QGraphicsScene;
QGraphicsProxyWidget *widget = scene->addWidget(ui->m_widget_rorate, Qt::FramelessWindowHint);
widget->setRotation(90);
QGraphicsView *view = new QGraphicsView(scene);
view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
view->resize(ui->m_widget_rorate->size());
view->setFrameShape(QFrame::NoFrame);
this->layout()->addWidget(view);
这下所有问题都解决了
但是,又出现一个问题,当界面里面有QTablewidget 时 , 在格子里面放控件后, 滑动滑块,控件不跟着滑块移动。
如果以上有错误的地方,本人实力有限,大家请包涵,如果有更好的方法,谢谢回复
在Qt 5中,由于取消了qws并使用QGraphicsView,屏幕翻转存在一些挑战。本文介绍了两种方法:一种直接翻转界面及其子界面,但存在关闭问题和标题栏显示问题;另一种将所有控件放入单独的widget再进行翻转,解决了前一种方法的问题,但遇到QTableWidget滚动时控件不移动的难题。作者欢迎更好的翻转策略分享。

2917

被折叠的 条评论
为什么被折叠?



