[英]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);
在水平拖動拆分器時,條形圖水平擴展/收縮,直到軸刻度標簽重疊,最終寬度值非常小,水平滾動條出現,這是無用的。 調整窗口大小的情況也是如此。
但是,我尋求不同的行為。 我希望條形圖可以水平滾動,而無需在拖動拆分器時調整它們的大小,即向左/向右拖動拆分器應該顯示更多/更少的圖形,而不是調整它們的大小
我試過為情節設置最小尺寸,但它不起作用。 我還嘗試將拆分器的拉伸因子指定為 0,但這也沒有效果,即在滾動條出現太晚的兩種情況下,行為都是自動調整條形圖的大小。
要實現所需的行為,您可以使用QTableWidget
小部件。 你需要:
QTableWidget
小部件。QScrollArea
小部件設置為QTableWidget
小部件的父級。horizontalHeaderVisible
和verticalHeaderVisible
設置為false
。setCellWidget(int row, int column, QWidget * widget)
方法將QCustomPlot
小部件添加到表中。這就是它的解決方法:我只需要為滾動區域調用setWidgetResizable
和false
,現在我有了一個永久滾動條,並且在拖動拆分器時自定義繪圖不會調整大小。
查找您是否有此行:
ui->my_plot->setInteractions(QCP::iRangeZoom | QCP::iRangeDrag);
並將其編輯為您想要的任何內容,例如僅范圍縮放:
ui->my_plot->setInteractions(QCP::iRangeZoom);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.