相关文章推荐
Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode . Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).

我参照QT给的zoomlinechart的例子做了一个缩放Qchart的程序,结果出了点问题。
官方给的例子QChart是放置在QChartView中的,缩放的时候,窗口尺寸不受影响。
而我自己的是放在QGraphicsview中,放大的话,窗口边缘会出现滚动条,有谁知道,这是什么问题嘛?
这是案例的代码:

Chart *chart = new Chart();
    chart->addSeries(series);
    chart->setTitle("Zoom in/out example");
    chart->setAnimationOptions(QChart::SeriesAnimations);
    chart->legend()->hide();
    chart->createDefaultAxes();
    ChartView *chartView = new ChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing);
    QMainWindow window;
    window.setCentralWidget(chartView);
    window.resize(400, 300);
    window.grabGesture(Qt::PanGesture);
    window.grabGesture(Qt::PinchGesture);
    window.show();
    return a.exec();

这是我自己的代码:

if(!Test)
             delete Test;
             Test=nullptr;
             Test=new Baseview(ReturnData(),0);
             Test->setRenderHint(QPainter::Antialiasing);
             //Test->setMinimumSize(640,480);
             this->resize(600,600);
             this->setCentralWidget(Test);
             Test=new Baseview(ReturnData(),0);
             Test->setRenderHint(QPainter::Antialiasing);
             //Test->setMinimumSize(640,480);
             this->setCentralWidget(Test);
Baseview::Baseview(const QStringList &clist,QWidget *parent):QGraphicsView(new QGraphicsScene,parent),IsPressed(false),pPos(0,0)
    ........
    m_chart=new QChart;
  .......
    scene()->addItem(m_chart);
    ......
如果是的話,Qt Zoom Line Example是用QChart本身提供的zoom
兩個實作應該是不一樣的
QGraphicsView的zoom是將整個QGraphicsScene縮放( 包括被放在裡面的QChart )
QChart的zoom只將它裡面的chart縮放

@sildtfine
我後來發現,用QGraphicsView放大會出現滾輪是因為當QChart zoomIn 的時候QGraphicsScene的sceneRect會變大

而QGraphicsView 預設如果QGraphicsScene 的sceneRect 太大,便會出現滾動條。如果要解決是可以手動用QGraphicsView::setSceneRect來處理

我想QChartView應該是已經處理這方面的問題了

 
推荐文章