Qt视图加载表格
2016-01-03 15:20
507 查看
Qt模型/视图这块看过后总容易忘记,为方便以后查找,记录一下!
利用QTableView加载表格
参考书籍 《Qt5开发及实例》
利用QTableView加载表格
mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QtWidgets/QMainWindow> #include "ui_mainwindow.h" #include <QTableView> #include <QtGui/QStandardItemModel> #include <QMenu> #include <QAction> #include <QSplitter> class mainwindow : public QMainWindow { Q_OBJECT public: mainwindow(QWidget *parent = 0); ~mainwindow(); void createActions() ; void createMenus() ; void setupModels() ; void setupView() ; void openFile(QString strpath) ; public slots: void slot_Open() ; private: Ui::mainwindowClass ui; QMenu *m_fileMenu ; QAction *m_openAct ; QSplitter *m_splitter ; QStandardItemModel *m_model ; QTableView *m_table ; QWidget *m_central ; }; mainwindow.cpp #include "mainwindow.h" #include <QMenuBar> #include <QHBoxLayout> #include <QFileDialog> #include <QTextStream> mainwindow::mainwindow(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); m_central = new QWidget(this) ; setFixedSize(500 , 300) ; //设置尺寸大小 createActions() ; createMenus() ; setupModels() ; setupView() ; } mainwindow::~mainwindow() { } void mainwindow::createActions() { m_openAct = new QAction(QStringLiteral("打开") , this) ; connect(m_openAct , SIGNAL(triggered()) , this , SLOT(slot_Open())) ; } void mainwindow::createMenus() { m_fileMenu = menuBar()->addMenu(QStringLiteral("文件")) ; m_fileMenu->addAction(m_openAct) ; } void mainwindow::setupModels() { m_model = new QStandardItemModel(4 ,4 , this) ; m_model->setHeaderData(0 , Qt::Horizontal , QStringLiteral("部门")) ; m_model->setHeaderData(1 , Qt::Horizontal , QStringLiteral("男")) ; m_model->setHeaderData(2 , Qt::Horizontal , QStringLiteral("女")) ; m_model->setHeaderData(3 , Qt::Horizontal , QStringLiteral("退休")) ; } void mainwindow::setupView() { m_table = new QTableView ; m_table->setModel(m_model) ; QHBoxLayout *layout = new QHBoxLayout(m_central) ; QItemSelectionModel *selectionModel = new QItemSelectionModel(m_model) ;//新建一个QItemSelectionModel作为QTableView的选择模型 m_table->setSelectionModel(selectionModel) ; layout->addWidget(m_table) ; connect(selectionModel , SIGNAL(selectionChanged(const QItemSelection , const QItemSelection)) , m_table , SLOT(selectionChanged(const QItemSelection , const QItemSelection))) ; setLayout(layout) ; setCentralWidget(m_central) ; } void mainwindow::slot_Open() { QString name ; name = QFileDialog::getOpenFileName(this , QStringLiteral("打开") , QDir::currentPath() , QStringLiteral("*.txt")) ; if (!name.isEmpty()) { openFile(name) ; } } void mainwindow::openFile(QString strpath) { if (!strpath.isEmpty()) { QFile file(strpath) ; if (file.open(QFile::ReadOnly|QFile::Text)) { QTextStream stream(&file) ; QString line ; m_model->removeRows(0 , m_model->rowCount(QModelIndex()) , QModelIndex()) ; int row = 0 ; do { line = stream.readLine() ;//读取一整行 if (!line.isEmpty()) { m_model->insertRows(row , 1 , QModelIndex()) ; QStringList pieces = line.split("," , QString::SkipEmptyParts) ; m_model->setData(m_model->index(row , 0 , QModelIndex()) , pieces.value(0)) ; m_model->setData(m_model->index(row , 1 , QModelIndex()) , pieces.value(1)) ; m_model->setData(m_model->index(row , 2 , QModelIndex()) , pieces.value(2)) ; m_model->setData(m_model->index(row , 3 , QModelIndex()) , pieces.value(3)) ; row++ ; } } while (!line.isEmpty()); file.close() ; } } } #endif // MAINWINDOW_H
参考书籍 《Qt5开发及实例》
相关文章推荐
- HT for Web嵌入QtWebKit的client解决方式
- QT编译出错解决方法
- ubuntu qt 配置qwt
- QT 操作MySQL
- opencv+QT学习(1) -- opencv+QT在win 7下的环境搭建
- QT for IOS 点滴
- Qt XML 使用QxmlStreamReader的使用的步骤和方法
- ubuntu15.04 opencv3.1.0 qt creator环境配置
- 【原创】QT4升级到QT5
- QTableWidget详解
- tiny4412 linux+qtopia nfs网络文件系统的挂载
- Qt之界面实现技巧
- Qt 中设置窗体透明度的几种方法
- 自学QT之Qt 4迁移至Qt 5
- Qt——鼠标拖动调整窗口大小
- Qt学习 之 多线程程序设计
- Qt 定时器的使用
- 2015年广工操作系统实验(要求实现图形化界面)
- QT线程2
- QT线程