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

📄 tablemodel.cpp

📁 Qt4源代码,详细介绍了Qt4编程中的范例
💻 CPP
字号:
#include <QtGui>

#include "tablemodel.h"

TableModel::TableModel(QObject* parent)
	: QAbstractTableModel(parent)
{
	populateTable();
}

void TableModel::populateTable()
{
	nameList << tr("朱元璋") << tr("朱允炆") << tr("朱棣");
	emperorList << tr("明太祖") << tr("惠帝") << tr("成祖");
	dynastyList << tr("洪武") << tr("建文") << tr("永乐");
	yearList << tr("1368") << tr("1399") << tr("1403");
}

int TableModel::rowCount(const QModelIndex & parent) const
{
	return nameList.size();
}

int TableModel::columnCount(const QModelIndex & parent) const
{
	return 4;
}

QVariant TableModel::data(const QModelIndex & index, int role) const
{
    if (!index.isValid() || role != Qt::DisplayRole)
        return QVariant();

	switch(index.column())
	{
	case 0:
		return nameList[index.row()];
	case 1:
		return emperorList[index.row()];
	case 2:
		return dynastyList[index.row()];
	case 3:
		return yearList[index.row()];
	}
	return QVariant();
}

Qt::DropActions TableModel::supportedDropActions() const
{
    return Qt::CopyAction | Qt::MoveAction;
} 

Qt::ItemFlags TableModel::flags(const QModelIndex &index) const
{
    Qt::ItemFlags defaultFlags = QAbstractTableModel::flags(index);

    if (index.isValid())
        return Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled | defaultFlags;
    else
        return Qt::ItemIsDropEnabled | defaultFlags;
}

QStringList TableModel::mimeTypes() const
{
    QStringList types;
    types << "text/plain";
    return types;
} 

QMimeData *TableModel::mimeData(const QModelIndexList &indexes) const
{
    QMimeData *mimeData = new QMimeData();

    QModelIndex idx = indexes[0];
    if (idx.isValid()) {
        QString text = data(idx, Qt::DisplayRole).toString();
        mimeData->setText(text);
    }

    return mimeData;
} 

bool TableModel::dropMimeData(const QMimeData *data,
     Qt::DropAction action, int row, int column, const QModelIndex &parent)
{	
    if (action == Qt::IgnoreAction)
        return true;

    if (!data->hasFormat("text/plain"))
        return false;

    if (parent.isValid())
    	setData(parent, data->text());
    else
    	return false;

    return true;
}
     
bool TableModel::setData(const QModelIndex & index, const QVariant & value, int role)
{
	int row = index.row();
	if(row > rowCount())
	{
		return false;
	}
	switch(index.column())
	{
	case 0:
		nameList[row] = value.toString();
		break;
	case 1:
		emperorList[row] = value.toString();
		break;
	case 2:
		dynastyList[row] = value.toString();
		break;		
	case 3:
		yearList[row] = value.toString();
		break;
	}
	return true;
}

⌨️ 快捷键说明

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