获取 QGraphicsView 的更新大小
在我的 Qt 应用程序中,我动态创建 QGraphicsView(s) 并将它们添加到其中 QGridLayout。 当我在网格内添加第一个视图时,该视图覆盖网格内的所有可用空间。 然后我添加第二个视图,网格内现在有两个大小相等的视图。 然后我添加第三个视图,网格内现在有三个相同大小的视图。 等等。
如何获得第一个视图的更新尺寸?
以下是我的试用,但我认为这不起作用。
//Definition of viewsPerRow
static const int viewsPerRow = 3;
void window::newViewRequested()
{
QGraphicsView *view = new QGraphicsView;
view->setVisible(true);
viewVector.push_back(view);
for(int i = viewGrid->count(); i < viewVector.count(); i++)
{
viewGrid->addWidget(view,i / viewsPerRow ,i % viewsPerRow);
}
qDebug()<<viewGrid->cellRect(0,0);
}
In my Qt Application I am dynamically creating QGraphicsView(s) and adding them inside
a QGridLayout.
When I add first view inside grid, the view covers all the available space inside grid.
Then I add second view and there are now two equally sized views inside grid.
Then I add third view and there are now three equally sized views inside grid.
And so on.
How can I get updated size of first view?
Below is my trial but I think this is not working.
//Definition of viewsPerRow
static const int viewsPerRow = 3;
void window::newViewRequested()
{
QGraphicsView *view = new QGraphicsView;
view->setVisible(true);
viewVector.push_back(view);
for(int i = viewGrid->count(); i < viewVector.count(); i++)
{
viewGrid->addWidget(view,i / viewsPerRow ,i % viewsPerRow);
}
qDebug()<<viewGrid->cellRect(0,0);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可能应该使用 QWidget::rect() 方法来获取视图本身的几何形状。这是一个应该按预期工作的示例。
You probably should use the
QWidget::rect()
methods to get the geometry of the views themselves. Here is a sample that should work as intended.不知道为什么你需要第一个视图的大小,但 Qt 在它“认为”它适合的时候只进行了几次重绘。因此,您不能依赖在视图之外查询的大小。
我尝试使用 resizeEvent 在尺寸大小时收到通知项目发生变化并执行必要的操作。
Not sure why you need the size of the first view, but Qt does only few redraws at the time it "thinks" it is suited. Therefore you can't rely on a size you query outside the view.
I'd try to use the resizeEvent to get notified when the size of an item changes and perform the necessary actions then.