QT TableView

来源:互联网 发布:视频格式转换软件下载 编辑:程序博客网 时间:2024/06/04 13:24
<pre name="code" class="cpp">#include <QtGui>//代理类,把所有单元格中的字符居中显示class VIPModel : public QStandardItemModel{    Q_OBJECTpublic:    VIPModel(QObject *parent=NULL) : QStandardItemModel(parent) { }    VIPModel(int row, int column, QObject *parent=NULL)        : QStandardItemModel(row, column, parent) { }   // QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const    QVariant data(const QModelIndex &index, int role /*= Qt::DisplayRole*/) const    {        switch (role)        {            case Qt::DisplayRole:                return QStandardItemModel::data(index, 0);                break;            case Qt::TextAlignmentRole:                return Qt::AlignCenter;                break;            case Qt::CheckStateRole:                break;        default:             return QVariant();             break;        }        return QVariant();    }   };#include "main.moc"/*将 project里面的 bulid dirctory的路径:C:\Qt\qt\examples\animation\appchooser-build-desktop修改为:C:\Qt\qt\examples\animation\appchooser*/int main(int argc, char *argv[]){    QApplication app(argc, argv);    VIPModel *model = new VIPModel(5, 5);    QTableView *tableView = new QTableView;    //把表格的背景调成黄蓝相间    //这种方法是在网上看到的,用起来还真方便啊    tableView->setAlternatingRowColors(true);    tableView->setStyleSheet("QTableView{background-color: rgb(250, 250, 115);"                             "alternate-background-color: rgb(141, 163, 215);}");    tableView->setWindowTitle("VIP List");    tableView->resize(700, 400);    tableView->setModel(model);    {        //QStringList headerList;        //headerList << "No." << "ID" << "Name" << "Age" << "Sex" << "Show";        //model->setHorizontalHeaderLabels(headerList);    }    //或者    {        model->setHorizontalHeaderItem(0, new QStandardItem(QObject::tr("No.")));        model->setHorizontalHeaderItem(1, new QStandardItem(QObject::tr("ID")));        model->setHorizontalHeaderItem(2, new QStandardItem(QObject::tr("Name")));        model->setHorizontalHeaderItem(3, new QStandardItem(QObject::tr("Age")));        model->setHorizontalHeaderItem(4, new QStandardItem(QObject::tr("Sex")));        model->setHorizontalHeaderItem(5, new QStandardItem(QObject::tr("Show")));    }   //tableView->verticalHeader()->setVisible(false);//隐藏每行前的序号   //或者   tableView->verticalHeader()->hide();//隐藏每行前的序号   tableView->horizontalHeader()->setStretchLastSection(true);//最后一列是否占据剩下空间   //设置表格属性   //设置列宽不可变动,即不能通过鼠标拖动增加列宽   /*{       tableView->horizontalHeader()->setResizeMode(0, QHeaderView::Fixed);       tableView->horizontalHeader()->setResizeMode(1, QHeaderView::Fixed);       tableView->horizontalHeader()->setResizeMode(2, QHeaderView::Fixed);       tableView->horizontalHeader()->setResizeMode(3, QHeaderView::Fixed);       tableView->horizontalHeader()->setResizeMode(4, QHeaderView::Fixed);   }*/   //设置表格的各列的宽度值   /*{       tableView->setColumnWidth(0,100);       tableView->setColumnWidth(1,100);       tableView->setColumnWidth(2,100);       tableView->setColumnWidth(3,100);       tableView->setColumnWidth(4,100);   }*/   //设置表格的单元为只读属性,即不能编辑   //stableView->setEditTriggers(QAbstractItemView::NoEditTriggers);   //如果你用在QTableView中使用右键菜单,需启用该属性   //tableView->setContextMenuPolicy(Qt::CustomContextMenu);   //动态添加行   //在表格中添加行时,我们只需要在model中插入数据即可,一旦model中的数据发生变化,QTabelView显示就会做相应的变动   //在第一行添加学生张三的个人信息(setItem函数的第一个参数表示行号,第二个表示列号,第三个为要显示的数据)   {    model->setItem(0, 0, new QStandardItem(("sam")));    model->setItem(0, 1, new QStandardItem("201000438"));    model->setItem(0, 2, new QStandardItem(("man")));    model->setItem(0, 3, new QStandardItem(("18")));    model->setItem(0, 4, new QStandardItem(("tj")));   }   //设置数据显示的样式   //设置单元格文本居中,张三的数据设置为居中显示   /*{//这里与data()函数功能相似,可以不重写data()而改为一下显示属性      model->item(0, 0)->setTextAlignment(Qt::AlignLeft);      model->item(0, 1)->setTextAlignment(Qt::AlignCenter);      model->item(0, 2)->setTextAlignment(Qt::AlignCenter);      model->item(0, 3)->setTextAlignment(Qt::AlignCenter);      model->item(0, 4)->setTextAlignment(Qt::AlignCenter);   }*/   //设置单元格文本颜色,张三的数据设置为红色   /*{//这里与data()函数功能相似,可以不重写data()而改为一下显示属性       model->item(0,0)->setForeground(QBrush(QColor(255,0,0)));       model->item(0, 0)->setForeground(QBrush(QColor(255, 0, 0)));       model->item(0, 1)->setForeground(QBrush(QColor(255, 0, 0)));       model->item(0, 2)->setForeground(QBrush(QColor(255, 0, 0)));       model->item(0, 3)->setForeground(QBrush(QColor(255, 0, 0)));       model->item(0, 4)->setForeground(QBrush(QColor(0, 0, 255)));       }*/   //将字体加粗   /*{//这里与data()函数功能相似,可以不重写data()而改为一下显示属性       model->item(0, 0)->setFont( QFont( "Times", 10, QFont::Black ) );       model->item(0, 1)->setFont( QFont( "Times", 10, QFont::Black ) );       model->item(0, 2)->setFont( QFont( "Times", 10, QFont::Black ) );       model->item(0, 3)->setFont( QFont( "Times", 10, QFont::Black ) );       model->item(0, 4)->setFont( QFont( "Times", 10, QFont::Black ) );   }*/    //设置排序方式,按年龄降序显示    //model->sort(3, Qt::DescendingOrder);    tableView->show();    return app.exec();}


                                             
0 0