QTableView 绑定自定义编辑控件 TSpinBoxDelegate、TSpinBoxDelegate、TComboBoxDelegate
自定义控件见
.h
#ifndef TABLEMODELVIEWEXAMPLE_H
#define TABLEMODELVIEWEXAMPLE_H
#include <QMainWindow>
#include <QLabel>
#include <QStandardItemModel>
#include <QItemSelectionModel>
#include <tfloatspindelegate.h>
#include <tspinboxdelegate.h>
#include <tcomboboxdelegate.h>
#define FixedColumnCount 6 //文件固定6列
namespace Ui {
class tableModelViewExample;
}
class tableModelViewExample : public QMainWindow
{
Q_OBJECT
private:
TSpinBoxDelegate *intSpinDelegate;
TFloatSpinDelegate *floatSpinDelegate;
TComboBoxDelegate *comboDelegate;
QLabel *labCurFile;
QLabel *labCellPos;
QLabel *labCellText;
QStandardItemModel *m_model;
QItemSelectionModel *m_selection;
void iniModelData(QStringList &aFileContent);
void openDataFile(QString aFileName);
void setSelectionItemAlign(Qt::Alignment atextAlignment);
public:
explicit tableModelViewExample(QWidget *parent = nullptr);
~tableModelViewExample();
private slots:
void do_currentChanged(const QModelIndex ¤t, const QModelIndex &previous);
void on_actOpen_triggered();
void on_actAppend_triggered();
void on_actDelete_triggered();
void on_actInsert_triggered();
void on_actModelData_triggered();
void on_actAlignLeft_triggered();
void on_actAlignCenter_triggered();
void on_actAlignRight_triggered();
void on_actFontBold_triggered(bool checked);
void on_actSave_triggered();
private:
Ui::tableModelViewExample *ui;
};
#endif // TABLEMODELVIEWEXAMPLE_H
.‘’cpp
#include "tablemodelviewexample.h"
#include "ui_tablemodelviewexample.h"
#include <QFileDialog>
#include <QTextStream>
#include <QRegularExpression>
void tableModelViewExample::iniModelData(QStringList &aFileContent)
{
int rowCnt = aFileContent.count();
m_model->setRowCount(rowCnt-1);
QString header=aFileContent.at(0);
QStringList headerList = header.split(QRegularExpression("\\s+"),Qt::SkipEmptyParts);
m_model->setHoriz