1

QCustomPlot用来绘制条形图。有两个这样的条形图水平排列在a内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);

现有行为:

在水平拖动拆分器时,条形图水平扩展/收缩,直到轴刻度标签重叠,最终以非常小的宽度值出现,水平滚动条出现,这是无用的。调整窗口大小也是如此。

要求的行为

但是,我寻求不同的行为。我希望条形图可以水平滚动,而不需要在拖动拆分器时调整它们的大小,即向左/右拖动拆分器应该显示更多/更少的图表,而不是调整它们的大小

查询

  1. 如何指定条形图应具有最小大小并根据 x 轴上的刻度数从该大小扩展?
  2. 如何阻止情节自动扩大/缩小?

到目前为止我尝试过的

我尝试为情节设置最小尺寸,但它不起作用。我还尝试将拆分器的拉伸因子指定为 0,但这也没有效果,即在滚动条出现得太晚的两种情况下,行为都是自动调整条形图的大小。

4

3 回答 3

1

要实现所需的行为,您可以使用QTableWidget小部件。你需要:

  1. 创建一个QTableWidget包含两列和一行的小部件。
  2. 将小部件设置为QScrollArea小部件的父级QTableWidget
  3. 隐藏水平和垂直标题。这样做设置horizontalHeaderVisibleverticalHeaderVisiblefalse
  4. 使用该方法将小部件添加QCustomPlot到表中setCellWidget(int row, int column, QWidget * widget)
于 2017-01-24T10:15:31.090 回答
0

这就是它的解决方法:我只需要为滚动区域调用setWidgetResizablewith false,现在我有一个永久滚动条,并且自定义绘图在拖动拆分器时不会调整大小。

于 2017-01-25T05:57:23.590 回答
0

查找是否有此行:

ui->my_plot->setInteractions(QCP::iRangeZoom | QCP::iRangeDrag);

并将其编辑为您想要的任何内容,例如只是范围缩放:

ui->my_plot->setInteractions(QCP::iRangeZoom);
于 2021-02-05T13:21:48.607 回答