我正在使用QCustomPlot
绘制条形图。在QSplitter
内可以水平排列两个这样的条形图(可以拖动)。在水平拖动分割器时,条形图会调整大小并缩放到轴标签开始重叠的点。我有一个父QWidget
,其中包含QScrollArea
,最终包含该情节。此小部件已添加到QSplitter
。
QWidget* topLeftParent = new QWidget;
topLeftParent->setLayout(new QVBoxLayout);
QScrollArea *topLeftScrollArea = new QScrollArea(this);
topLeftScrollArea->setWidget(energyGraph->GetPlot());
topLeftScrollArea->setWidgetResizable(true);
topLeftScrollArea->setFrameShape(QFrame::NoFrame);
topLeftParent->layout()->addWidget(topLeftScrollArea);
m_pTopLeftHorizontalSplitter->setMinimumWidth(500);
m_pTopLeftHorizontalSplitter->addWidget(topLeftParent);
在水平拖动分割器时,条形图水平扩展/收缩,直到轴标签重叠并最终处于非常小的宽度值,水平滚动条出现,这是无用的。调整窗口大小的情况也是如此。
然而,我寻求不同的行为。我希望条形图可以水平滚动而不需要在拖动分割器时调整大小,即向左/向右拖动分割器应该显示更多/更少的图形,并且不调整它们的大小
我已尝试为绘图设置最小尺寸,但它不起作用。 我也尝试将分割器的伸展因子指定为0,但也有 no 效果,即在滚动条出现得太晚的两种情况下,行为都会自动调整条形图。
答案 0 :(得分:1)
要实现所需的行为,您可以使用QTableWidget
小部件。你需要:
QTableWidget
小部件。QScrollArea
小部件设置为QTableWidget
小部件的父级。horizontalHeaderVisible
和verticalHeaderVisible
设置为false
。QCustomPlot
方法将setCellWidget(int row, int column, QWidget * widget)
小部件添加到表格中。答案 1 :(得分:0)
这就是它的解决方法:我只需要用setWidgetResizable
调用false
作为滚动区域,现在我有一个永久滚动条,并且拖动分割器时自定义绘图不会调整大小。
答案 2 :(得分:0)
查找您是否有此行:
ui->my_plot->setInteractions(QCP::iRangeZoom | QCP::iRangeDrag);
并将其编辑为您想要的任何内容,例如只是范围缩放:
ui->my_plot->setInteractions(QCP::iRangeZoom);