QT控件大全 十六 QChartXY
2017-12-08 10:23
260 查看
效果如图:
核心代码:
#ifndef CHARTXY_H
#define CHARTXY_H
#include <QAbstractItemView>
#include <QMouseEvent>
#include "chartxysetting.h"
#include "chartxyrender.h"
#include <qglobal.h>
#include <QtCore>
#define CHARTXY_VERSION 0
#define CHARTXY_REVISION 8
class ChartXY: public QAbstractItemView
{
Q_OBJECT
public:
explicit ChartXY(QWidget *parent=0);
virtual QRect visualRect(const QModelIndex &index) const;
virtual void scrollTo(const QModelIndex &index,ScrollHint hint=EnsureVisible);
virtual QModelIndex indexAt(const QPoint &point) const;
ChartXYSetting &setting(void);
static unsigned int version(void);
static unsigned int revision(void);
protected:
virtual QModelIndex moveCursor(CursorAction cursorAction,Qt::KeyboardModifiers modifiers);
virtual int horizontalOffset() const;
virtual int verticalOffset() const;
virtual bool isIndexHidden(const QModelIndex &index) const;
virtual void setSelection(const QRect &rect,QItemSelectionModel::SelectionFlags command);
virtual QRegion visualRegionForSelection(const QItemSelection &selection) const;
virtual void dataChanged(const QModelIndex &topLeft,const QModelIndex &bottomRight);
virtual void paintEvent(QPaintEvent *event);
virtual void resizeEvent(QResizeEvent *event);
virtual void scrollContentsBy(int dx, int dy);
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QMouseEvent *event);
signals:
public slots:
void updateChart(void);
private:
ChartXYSetting *m_setting;
ChartXYRender *m_render;
};
#endif // CHARTXY_H
源码工程:QQ:609162385
核心代码:
#ifndef CHARTXY_H
#define CHARTXY_H
#include <QAbstractItemView>
#include <QMouseEvent>
#include "chartxysetting.h"
#include "chartxyrender.h"
#include <qglobal.h>
#include <QtCore>
#define CHARTXY_VERSION 0
#define CHARTXY_REVISION 8
class ChartXY: public QAbstractItemView
{
Q_OBJECT
public:
explicit ChartXY(QWidget *parent=0);
virtual QRect visualRect(const QModelIndex &index) const;
virtual void scrollTo(const QModelIndex &index,ScrollHint hint=EnsureVisible);
virtual QModelIndex indexAt(const QPoint &point) const;
ChartXYSetting &setting(void);
static unsigned int version(void);
static unsigned int revision(void);
protected:
virtual QModelIndex moveCursor(CursorAction cursorAction,Qt::KeyboardModifiers modifiers);
virtual int horizontalOffset() const;
virtual int verticalOffset() const;
virtual bool isIndexHidden(const QModelIndex &index) const;
virtual void setSelection(const QRect &rect,QItemSelectionModel::SelectionFlags command);
virtual QRegion visualRegionForSelection(const QItemSelection &selection) const;
virtual void dataChanged(const QModelIndex &topLeft,const QModelIndex &bottomRight);
virtual void paintEvent(QPaintEvent *event);
virtual void resizeEvent(QResizeEvent *event);
virtual void scrollContentsBy(int dx, int dy);
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QMouseEvent *event);
signals:
public slots:
void updateChart(void);
private:
ChartXYSetting *m_setting;
ChartXYRender *m_render;
};
#endif // CHARTXY_H
#include "chartxy.h" ChartXY::ChartXY(QWidget *parent): QAbstractItemView(parent) { m_setting=new ChartXYSetting(this); m_render=new ChartXYRender(this,m_setting); //grabMouse(Qt::CrossCursor); } QRect ChartXY::visualRect(const QModelIndex &index) const { return(QRect()); } void ChartXY::scrollTo(const QModelIndex &index,ScrollHint hint) { update(); } QModelIndex ChartXY::indexAt(const QPoint &point) const { return(QModelIndex()); } ChartXYSetting &ChartXY::setting(void) { return(*m_setting); } unsigned int ChartXY::version(void) { return(CHARTXY_VERSION); } unsigned int ChartXY::revision(void) { return(CHARTXY_REVISION); } QModelIndex ChartXY::moveCursor(CursorAction cursorAction,Qt::KeyboardModifiers modifiers) { return(QModelIndex()); } int ChartXY::horizontalOffset() const { return(0); } int ChartXY::verticalOffset() const { return(0); } bool ChartXY::isIndexHidden(const QModelIndex &index) const { return(false); } void ChartXY::setSelection(const QRect &rect,QItemSelectionModel::SelectionFlags command) { update(); } QRegion ChartXY::visualRegionForSelection(const QItemSelection &selection) const { return(QRegion()); } void ChartXY::dataChanged(const QModelIndex &topLeft,const QModelIndex &bottomRight) { //qDebug() << "Data is changed " << endl; QAbstractItemView::dataChanged(topLeft, bottomRight); updateChart(); } void ChartXY::paintEvent(QPaintEvent *event) { m_render->paint(); } void ChartXY::resizeEvent(QResizeEvent *event) { updateGeometries(); } void ChartXY::scrollContentsBy(int dx, int dy) { } void ChartXY::mousePressEvent(QMouseEvent *event) { if(event->button()==Qt::LeftButton) { setCursor(Qt::CrossCursor); } } void ChartXY::mouseReleaseEvent(QMouseEvent *event) { setCursor(Qt::ArrowCursor); } void ChartXY::updateChart(void) { m_setting->scale().calculateLimit(model(),m_setting->grid().horizzontalTick().tickMajor()-1,m_setting->grid().verticalTick().tickMajor()-1); viewport()->update(); }
源码工程:QQ:609162385
相关文章推荐
- QT控件大全四QMeter
- QT控件大全 二十六 QRecentFilesMenu
- QT控件大全 四十二 QTickerGraph
- QT控件大全 四十一 QLightBoxWidget
- QT控件大全 三十一 QReflex
- QT控件大全 四十 QNavigationbar
- QT控件大全 十一 QLock
- QT控件大全 十七 QHexedit
- QT控件大全 三十九 QVCursorQCircularBar
- QT控件大全 十二 QScale
- QT控件大全 三十八 QWidgetKeyboard
- QT控件大全 十三 WidgetMarqueeLabel
- QT控件大全 四十六 QSpeed
- QT控件大全 二十七 QSpellCheck
- QT控件大全 三十二 QPotPlug
- QT控件大全 二十九 QPlusExtension
- QT控件大全 七 QProg
- QT控件大全 十四 QProgressmeter
- QT控件大全 三十 QGumPush
- QT控件大全 四十五 QSclock