簡體   English   中英

在 QSplitter 中設置最小固定尺寸 QCustomPlot 條形圖

[英]Setting minimum fixed size QCustomPlot bar graph inside QSplitter

我正在使用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);

現有行為:

在水平拖動拆分器時,條形圖水平擴展/收縮,直到軸刻度標簽重疊,最終寬度值非常小,水平滾動條出現,這是無用的。 調整窗口大小的情況也是如此。

必需的行為

但是,我尋求不同的行為。 我希望條形圖可以水平滾動,而無需在拖動拆分器時調整它們的大小,即向左/向右拖動拆分器應該顯示更多/更少的圖形,而不是調整它們的大小

查詢

  1. 如何指定條形圖應具有最小尺寸並根據 x 軸上的刻度數從中擴展?
  2. 如何阻止繪圖自動擴展/收縮?

到目前為止我嘗試過的

我試過為情節設置最小尺寸,但它不起作用。 我還嘗試將拆分器的拉伸因子指定為 0,但這也沒有效果,即在滾動條出現太晚的兩種情況下,行為都是自動調整條形圖的大小。

要實現所需的行為,您可以使用QTableWidget小部件。 你需要:

  1. 創建一個具有兩列和一行的QTableWidget小部件。
  2. QScrollArea小部件設置為QTableWidget小部件的父級。
  3. 隱藏水平和垂直標題。 為此,將horizontalHeaderVisibleverticalHeaderVisible設置為false
  4. 使用setCellWidget(int row, int column, QWidget * widget)方法將QCustomPlot小部件添加到表中。

這就是它的解決方法:我只需要為滾動區域調用setWidgetResizablefalse ,現在我有了一個永久滾動條,並且在拖動拆分器時自定義繪圖不會調整大小。

查找您是否有此行:

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

並將其編輯為您想要的任何內容,例如僅范圍縮放:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM