如何并排执行两个 QGraphicsViews 的 50/50 布局?
How can I enforce a 50/50 layout of two QGraphicsViews side-by-side?
我正尝试在 Qt Designer 中使用网格布局并排布置两个 QGraphicsView
小部件,但视图在 scale
和 translate
调用时意外调整大小:
我不确定执行 50/50 分配的选项是什么。在 Qt Designer 中,QGraphicsView
上最相关的设置看起来像设置 QSizePolicy
,但是当我将其设置为固定水平策略时,QGraphicsView
仍然改变大小。
我想我想做什么很清楚,但也许我的方法是错误的。我应该使用不同的布局吗?也许我可以用 QGraphicsView
本身做些什么?
作为参考,这里是从 .ui 文件生成的相关部分:
void setupUi(QMainWindow* MainWindow)
{
...
QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(MainWindow->sizePolicy().hasHeightForWidth());
MainWindow->setSizePolicy(sizePolicy);
centralwidget = new QWidget(MainWindow);
gridLayout = new QGridLayout(centralwidget);
graphicsView = new QGraphicsView(centralwidget);
sizePolicy.setHeightForWidth(graphicsView->sizePolicy().hasHeightForWidth());
graphicsView->setSizePolicy(sizePolicy);
gridLayout->addWidget(graphicsView, 0, 0, 1, 1);
graphicsView2 = new QGraphicsView(centralwidget);
sizePolicy.setHeightForWidth(graphicsView2->sizePolicy().hasHeightForWidth());
graphicsView2->setSizePolicy(sizePolicy);
gridLayout->addWidget(graphicsView2, 0, 1, 1, 1);
MainWindow->setCentralWidget(centralwidget);
...
}
如果您希望两个视图始终平等共享水平 space,那么您可能需要做的就是:
graphicsView->setSizePolicy( QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored));
graphicsView2->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored));
我正尝试在 Qt Designer 中使用网格布局并排布置两个 QGraphicsView
小部件,但视图在 scale
和 translate
调用时意外调整大小:
我不确定执行 50/50 分配的选项是什么。在 Qt Designer 中,QGraphicsView
上最相关的设置看起来像设置 QSizePolicy
,但是当我将其设置为固定水平策略时,QGraphicsView
仍然改变大小。
我想我想做什么很清楚,但也许我的方法是错误的。我应该使用不同的布局吗?也许我可以用 QGraphicsView
本身做些什么?
作为参考,这里是从 .ui 文件生成的相关部分:
void setupUi(QMainWindow* MainWindow)
{
...
QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(MainWindow->sizePolicy().hasHeightForWidth());
MainWindow->setSizePolicy(sizePolicy);
centralwidget = new QWidget(MainWindow);
gridLayout = new QGridLayout(centralwidget);
graphicsView = new QGraphicsView(centralwidget);
sizePolicy.setHeightForWidth(graphicsView->sizePolicy().hasHeightForWidth());
graphicsView->setSizePolicy(sizePolicy);
gridLayout->addWidget(graphicsView, 0, 0, 1, 1);
graphicsView2 = new QGraphicsView(centralwidget);
sizePolicy.setHeightForWidth(graphicsView2->sizePolicy().hasHeightForWidth());
graphicsView2->setSizePolicy(sizePolicy);
gridLayout->addWidget(graphicsView2, 0, 1, 1, 1);
MainWindow->setCentralWidget(centralwidget);
...
}
如果您希望两个视图始终平等共享水平 space,那么您可能需要做的就是:
graphicsView->setSizePolicy( QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored));
graphicsView2->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored));