⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qtable.h

📁 著名的A780系列,E680系列的SDK开发包
💻 H
字号:
/******************************************************************************** Definition of QTable widget class**** Created : 000607**** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.**** This file is part of the table module of the Qt GUI Toolkit.**** This file may be distributed under the terms of the Q Public License** as defined by Trolltech AS of Norway and appearing in the file** LICENSE.QPL included in the packaging of this file.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** Licensees holding valid Qt Enterprise Edition licenses may use this** file in accordance with the Qt Commercial License Agreement provided** with the Software.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for**   information about Qt Commercial License Agreements.** See http://www.trolltech.com/qpl/ for QPL licensing information.** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#ifndef QTABLE_H#define QTABLE_H#ifndef QT_H#include <qscrollview.h>#include <qpixmap.h>#include <qvector.h>#include <qheader.h>#include <qarray.h>#include <qlist.h>#include <qguardedptr.h>#include <qshared.h>#endif // QT_H#ifndef QT_NO_TABLEclass QTableHeader;class QValidator;class QTable;class QPaintEvent;class QTimer;class QResizeEvent;struct QTablePrivate;struct QTableHeaderPrivate;class Q_EXPORT QTableSelection{public:    QTableSelection();    void init( int row, int col );    void expandTo( int row, int col );    bool operator==( const QTableSelection &s ) const;    int topRow() const { return tRow; }    int bottomRow() const { return bRow; }    int leftCol() const { return lCol; }    int rightCol() const { return rCol; }    int anchorRow() const { return aRow; }    int anchorCol() const { return aCol; }    bool isActive() const { return active; }private:    uint active : 1;    uint inited : 1;    int tRow, lCol, bRow, rCol;    int aRow, aCol;};class Q_EXPORT QTableItem : public Qt{public:    enum EditType { Never, OnTyping, WhenCurrent, Always };    QTableItem( QTable *table, EditType et, const QString &text );    QTableItem( QTable *table, EditType et, const QString &text,                const QPixmap &p );    virtual ~QTableItem();    virtual QPixmap pixmap() const;    virtual QString text() const;    virtual void setPixmap( const QPixmap &p );    virtual void setText( const QString &t );    QTable *table() const { return t; }    virtual int alignment() const;    virtual void setWordWrap( bool b );    bool wordWrap() const;    EditType editType() const;    virtual QWidget *createEditor() const;    virtual void setContentFromEditor( QWidget *w );    virtual void setReplaceable( bool );    bool isReplaceable() const;    virtual QString key() const;    virtual QSize sizeHint() const;    virtual void setSpan( int rs, int cs );    int rowSpan() const;    int colSpan() const;    virtual void setRow( int r );    virtual void setCol( int c );    int row() const;    int col() const;    virtual void paint( QPainter *p, const QColorGroup &cg,                        const QRect &cr, bool selected );    void updateEditor( int oldRow, int oldCol );private:    QString txt;    QPixmap pix;    QTable *t;    EditType edType;    uint wordwrap : 1;    uint tcha : 1;    int rw, cl;    int rowspan, colspan;};#if defined(Q_TEMPLATEDLL)// MOC_SKIP_BEGINtemplate class Q_EXPORT QVector<QTableItem>;template class Q_EXPORT QVector<QWidget>;template class Q_EXPORT QList<QTableSelection>;// MOC_SKIP_END#endifclass Q_EXPORT QTable : public QScrollView{    Q_OBJECT    Q_PROPERTY( int numRows READ numRows WRITE setNumRows )    Q_PROPERTY( int numCols READ numCols WRITE setNumCols )    Q_PROPERTY( bool showGrid READ showGrid WRITE setShowGrid )    Q_PROPERTY( bool rowMovingEnabled READ rowMovingEnabled WRITE setRowMovingEnabled )    Q_PROPERTY( bool columnMovingEnabled READ columnMovingEnabled WRITE setColumnMovingEnabled )    friend class QTableHeader;public:    QTable( QWidget *parent = 0, const char *name = 0 );    QTable( int numRows, int numCols,            QWidget *parent = 0, const char *name = 0 );    ~QTable();    QHeader *horizontalHeader() const;    QHeader *verticalHeader() const;    enum SelectionMode { Single, Multi, NoSelection  };    virtual void setSelectionMode( SelectionMode mode );    SelectionMode selectionMode() const;    virtual void setItem( int row, int col, QTableItem *item );    virtual void setText( int row, int col, const QString &text );    virtual void setPixmap( int row, int col, const QPixmap &pix );    virtual QTableItem *item( int row, int col ) const;    virtual QString text( int row, int col ) const;    virtual QPixmap pixmap( int row, int col ) const;    virtual void clearCell( int row, int col );    virtual QRect cellGeometry( int row, int col ) const;    virtual int columnWidth( int col ) const;    virtual int rowHeight( int row ) const;    virtual int columnPos( int col ) const;    virtual int rowPos( int row ) const;    virtual int columnAt( int pos ) const;    virtual int rowAt( int pos ) const;    int numRows() const;    int numCols() const;    void updateCell( int row, int col );    bool eventFilter( QObject * o, QEvent * );    int currentRow() const { return curRow; }    int currentColumn() const { return curCol; }    void ensureCellVisible( int row, int col );    bool isSelected( int row, int col ) const;    bool isRowSelected( int row, bool full = FALSE ) const;    bool isColumnSelected( int col, bool full = FALSE ) const;    int numSelections() const;    QTableSelection selection( int num ) const;    virtual int addSelection( const QTableSelection &s );    virtual void removeSelection( const QTableSelection &s );    virtual void removeSelection( int num );    virtual int currentSelection() const;    bool showGrid() const;    bool columnMovingEnabled() const;    bool rowMovingEnabled() const;    virtual void sortColumn( int col, bool ascending = TRUE,                             bool wholeRows = FALSE );    bool sorting() const;    virtual void takeItem( QTableItem *i );    virtual void setCellWidget( int row, int col, QWidget *e );    virtual QWidget *cellWidget( int row, int col ) const;    virtual void clearCellWidget( int row, int col );    virtual void paintCell( QPainter *p, int row, int col,                            const QRect &cr, bool selected );    virtual void paintFocus( QPainter *p, const QRect &r );    QSize sizeHint() const;public slots:    virtual void setNumRows( int r );    virtual void setNumCols( int r );    virtual void setShowGrid( bool b );    virtual void hideRow( int row );    virtual void hideColumn( int col );    virtual void showRow( int row );    virtual void showColumn( int col );    virtual void setColumnWidth( int col, int w );    virtual void setRowHeight( int row, int h );    virtual void adjustColumn( int col );    virtual void adjustRow( int row );    virtual void setColumnStretchable( int col, bool stretch );    virtual void setRowStretchable( int row, bool stretch );    bool isColumnStretchable( int col ) const;    bool isRowStretchable( int row ) const;    virtual void setSorting( bool b );    virtual void swapRows( int row1, int row2 );    virtual void swapColumns( int col1, int col2 );    virtual void swapCells( int row1, int col1, int row2, int col2 );    virtual void setLeftMargin( int m );    virtual void setTopMargin( int m );    virtual void setCurrentCell( int row, int col );    void clearSelection( bool repaint = TRUE );    virtual void setColumnMovingEnabled( bool b );    virtual void setRowMovingEnabled( bool b );protected:    void drawContents( QPainter *p, int cx, int cy, int cw, int ch );    void contentsMousePressEvent( QMouseEvent* );    void contentsMouseMoveEvent( QMouseEvent* );    void contentsMouseDoubleClickEvent( QMouseEvent* );    void contentsMouseReleaseEvent( QMouseEvent* );    void keyPressEvent( QKeyEvent* );    void focusInEvent( QFocusEvent* );    void focusOutEvent( QFocusEvent* );    void resizeEvent( QResizeEvent * );    void showEvent( QShowEvent *e );    virtual void paintEmptyArea( QPainter *p, int cx, int cy, int cw, int ch );    virtual void activateNextCell();    virtual QWidget *createEditor( int row, int col, bool initFromCell ) const;    virtual void setCellContentFromEditor( int row, int col );    virtual QWidget *beginEdit( int row, int col, bool replace );    virtual void endEdit( int row, int col, bool accept, bool replace );    virtual void resizeData( int len );    virtual void insertWidget( int row, int col, QWidget *w );    int indexOf( int row, int col ) const;protected slots:    virtual void columnWidthChanged( int col );    virtual void rowHeightChanged( int row );    virtual void columnIndexChanged( int s, int oi, int ni );    virtual void rowIndexChanged( int s, int oi, int ni );    virtual void columnClicked( int col );signals:    void currentChanged( int row, int col );    void clicked( int row, int col, int button, const QPoint &mousePos );    void doubleClicked( int row, int col, int button, const QPoint &mousePos );    void pressed( int row, int col, int button, const QPoint &mousePos );    void selectionChanged();    void valueChanged( int row, int col );private slots:    void doAutoScroll();private:    enum EditMode { NotEditing, Editing, Replacing };    void updateGeometries();    void repaintSelections( QTableSelection *oldSelection,                            QTableSelection *newSelection,                            bool updateVertical = TRUE,                            bool updateHorizontal = TRUE );    QRect rangeGeometry( int topRow, int leftCol,                         int bottomRow, int rightCol, bool &optimize );    void fixRow( int &row, int y );    void fixCol( int &col, int x );    void init( int numRows, int numCols );    QSize tableSize() const;    bool isEditing() const;    void repaintCell( int row, int col );    void contentsToViewport2( int x, int y, int& vx, int& vy );    QPoint contentsToViewport2( const QPoint &p );    void viewportToContents2( int vx, int vy, int& x, int& y );    QPoint viewportToContents2( const QPoint &p );    void updateRowWidgets( int row );    void updateColWidgets( int col );    bool isRowHidden( int ) const;    bool isColumnHidden( int ) const;private:    QVector<QTableItem> contents;    QVector<QWidget> widgets;    int curRow;    int curCol;    QTableHeader *leftHeader, *topHeader;    EditMode edMode;    int editCol, editRow;    QList<QTableSelection> selections;    QTableSelection *currentSel;    QTimer *autoScrollTimer;    bool sGrid, mRows, mCols;    int lastSortCol;    bool asc;    bool doSort;    bool mousePressed;    SelectionMode selMode;    int pressedRow, pressedCol;    QTablePrivate *d;#if defined(QT_EZX_MUNGE)public:    /* Reimplemented from QWidget */    virtual bool sendPackage(void);    void sendItemPackage(int, int);#endif /* defined(QT_EZX_MUNGE) */};#if defined(Q_TEMPLATEDLL)// MOC_SKIP_BEGINtemplate class Q_EXPORT QArray<int>;template class Q_EXPORT QArray<bool>;// MOC_SKIP_END#endifclass Q_EXPORT QTableHeader : public QHeader{    friend class QTable;    Q_OBJECTpublic:    enum SectionState {        Normal,        Bold,        Selected    };    QTableHeader( int, QTable *t, QWidget *parent=0, const char *name=0 );    ~QTableHeader() {};    void addLabel( const QString &s , int size );    void setSectionState( int s, SectionState state );    SectionState sectionState( int s ) const;    int sectionSize( int section ) const;    int sectionPos( int section ) const;    int sectionAt( int section ) const;    void setSectionStretchable( int s, bool b );    bool isSectionStretchable( int s ) const;signals:    void sectionSizeChanged( int s );protected:    void paintEvent( QPaintEvent *e );    void paintSection( QPainter *p, int index, QRect fr );    void mousePressEvent( QMouseEvent *e );    void mouseMoveEvent( QMouseEvent *e );    void mouseReleaseEvent( QMouseEvent *e );    void mouseDoubleClickEvent( QMouseEvent *e );    void resizeEvent( QResizeEvent *e );private slots:    void doAutoScroll();    void sectionWidthChanged( int col, int os, int ns );    void indexChanged( int sec, int oldIdx, int newIdx );    void updateStretches();    void updateWidgetStretches();private:    void updateSelections();    void saveStates();    void setCaching( bool b );    void swapSections( int oldIdx, int newIdx );    bool doSelection( QMouseEvent *e );private:    QArray<int> states, oldStates;    QArray<bool> stretchable;    QArray<int> sectionSizes, sectionPoses;    bool mousePressed;    int pressPos, startPos, endPos;    QTable *table;    QTimer *autoScrollTimer;    QWidget *line1, *line2;    bool caching;    int resizedSection;    bool isResizing;    int numStretches;    QTimer *stretchTimer, *widgetStretchTimer;    QTableHeaderPrivate *d;    void setNumLabels( int n );};#endif // QT_NO_TABLE#endif // TABLE_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -