zoukankan      html  css  js  c++  java
  • qt5--表格控件QTableWidget

    需要    #include <QTableWidget>      #include <QTableWidgetItem>     

    #include "win.h"
    #include <QDebug>
    #include <QPushButton>
    #include <QList>
    
    Win::Win(QWidget *parent)
        : QWidget(parent)
    {
        this->resize(500,400);
    
        QPushButton* btn=new QPushButton("按钮",this);
        btn->move(400,350);
        connect(btn,&QPushButton::clicked,this,&Win::A);
    
        tw=new QTableWidget(this);  //创建空表格控件
        //tw=new QTableWidget(4,3,this);//创建4行3列表格控件
        tw->move(10,10);
        tw->resize(400,300);
        tw->setRowCount(15);//设置行数--不包括标题
        tw->setColumnCount(3);//设置列数
        tw->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"物理");//设置水平标题
        //tw->setVerticalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");//设置垂直标题
    
        QTableWidgetItem* item0V0=new QTableWidgetItem("张三");
        tw->setItem(0,0,item0V0);  //给指定单元格设置数据
        //参数1 行号
        //参数2 列号
        tw->setItem(1,0,new QTableWidgetItem("李四"));  //给指定单元格设置数据
        tw->setItem(2,0,new QTableWidgetItem("王五"));
        tw->setItem(3,0,new QTableWidgetItem("张三ab"));
        tw->setItem(4,0,new QTableWidgetItem("熊五"));
        tw->setItem(5,0,new QTableWidgetItem("刘六"));
        tw->setItem(6,0,new QTableWidgetItem("邢七"));
        tw->setItem(7,0,new QTableWidgetItem("宋八"));
        tw->setItem(8,0,new QTableWidgetItem("尚九"));
        tw->setItem(9,0,new QTableWidgetItem("施十"));
        tw->setItem(10,0,new QTableWidgetItem("陈十一"));
        tw->setItem(11,0,new QTableWidgetItem("程十二"));
        tw->setItem(12,0,new QTableWidgetItem("洪十三"));
        tw->setItem(13,0,new QTableWidgetItem("齐十四"));
        tw->setItem(14,0,new QTableWidgetItem("谢十五"));
    
        tw->setItem(0,2,new QTableWidgetItem(QString::number(86)));
        //QString::number(86)---int转成 QString
        tw->setItem(1,2,new QTableWidgetItem(QString::number(57)));
        tw->setItem(2,2,new QTableWidgetItem(QString::number(76)));
        tw->setItem(3,2,new QTableWidgetItem(QString::number(69)));
    
        //tw->insertRow(1);//插入一行
        //参数  行索引
    
        //tw->insertColumn(1);//插入一列
        //参数  列索引
    
        QList<QTableWidgetItem*> items= tw->findItems("张三Ab",Qt::MatchContains);//找出匹配的项目
        //Qt::MatchExactly    完全匹配才算
        //Qt::MatchContains   只要包含指定文本的就算-- 不区分大小写
        //返回值:项目列表
    
        QTableWidgetItem* item;
        item=items.first();//返回项目列表中的第一个项目指针
        int i=item->row();//返回项目的行序号
    
    
        i=tw->rowCount();  //返回 表格的行数--不包括标题
        i=tw->columnCount(); // 返回表格的列数
    
    
        tw->setColumnWidth(0,50);//设置列宽
        //参数1 列序号
        //参数2 列宽
        tw->setRowHeight(0, 50);     //设置行高,第一个参数序号,第二个参数高度值
        tw->setShowGrid(true); //设置是否显示表格上的网格线,True为显示(默认),False不显示
        item0V0->setTextAlignment(Qt::AlignCenter); //设置项目的文本对齐方式
        //tw->setSpan(1, 0, 2, 2);  //用来合并单元格,前两个int参数分别为起始行序号和列序号,后两个分别为要合并的行数和列数
    
        connect(tw,&QTableWidget::itemClicked,this,&Win::B);  //单击表格控件时触发的信号
        //这个信号自动传递一个参数:被单击项目的指针
        // itemDoubleClicked(QTableWidgetItem *item)  双击表格控件时触发的信号
    
        connect(tw,&QTableWidget::itemSelectionChanged,this,&Win::C);//选择的项目发生变化时触发信号
        connect(tw,&QTableWidget::currentItemChanged,this,&Win::D);//当前项目变化时触发信号
        //这个信号自动传递二个参数:当前项目指针    前一项目指针
        connect(tw,&QTableWidget::currentCellChanged,this,&Win::E);//当前单元格变化时触发信号
        //这个信号自动传递四个参数:当前行序号  当前列序号 前一行序号 前一列序号
        connect(tw,&QTableWidget::itemChanged,this,&Win::F);//项目内容发生变化时触发信号
        //这个信号自动传递一个参数:变化后的项目指针
        connect(tw,&QTableWidget::itemPressed,this,&Win::G);//在项目上按下了鼠标时触发信号
        //这个信号自动传递一个参数:按下鼠标的项目指针
        connect(tw,&QTableWidget::cellChanged,this,&Win::H);//单元格内容发生了修改,编辑完毕时触发信号
        //包括用户和指令修改
        //这个信号自动传递二个参数:单元格的行序号和列序号
        connect(tw,&QTableWidget::cellClicked,this,&Win::I);//单击单元格时触发信号
        //这个信号自动传递二个参数:单元格的行序号和列序号
    
        //cellDoubleClicked(int row, int column)   双击单元格时触发信号
    
        connect(tw,&QTableWidget::itemActivated,this,&Win::L);//  如何触发信号 ???
    
        connect(tw,&QTableWidget::itemEntered,this,&Win::M);//表格没有焦点时鼠标按下某项目时触发信号
        //这个信号自动传递一个参数:项目指针
    }
    
    void Win::M(QTableWidgetItem *item){
        qDebug()<<"鼠标进入了项目:"<<item->text();
    }
    void Win::L(QTableWidgetItem *item){
        qDebug()<<"激活了项目:"<<item->text();
    }
    void Win::I(int row, int column){
        qDebug()<<"单击了单元格:"<<row<<column;
    }
    void Win::H(int row, int column){
        qDebug()<<"单元格内容变化了:"<<row<<column;
    }
    void Win::G(QTableWidgetItem *item){
        qDebug()<<"按下了鼠标:"<<item->text();
    }
    void Win::F(QTableWidgetItem *item){
        qDebug()<<" 项目变化了"<<item->text();
    }
    void Win::E(int currentRow, int currentColumn, int previousRow, int previousColumn){
        qDebug()<<currentRow<< currentColumn<<previousRow<<previousColumn;
    }
    void Win::D(QTableWidgetItem *current, QTableWidgetItem *previous){
        qDebug()<<current<<previous;
    }
    
    void Win::C(){
        qDebug()<<"选择的项目变化了";
    
    }
    
    void Win::B(QTableWidgetItem *item){
        qDebug()<<item->text();
        //item->text()    返回项目的文本
    }
    Win::~Win()
    {
    
    }
    
    
    void Win::A(){
        QTableWidgetItem* item=tw->item(1,2); //返回指定单元格的项目指针
        //item->setText("李明"); //给项目设置文本
        //tw->clear(); //清空表格内容--包括标题栏
        //tw->clearContents();//清空表格内容--不清空标题栏
        //tw->removeRow(1); //删除指定行--下面行自动上移
        //tw->removeColumn(1);//删除指定列--右边列自动左移
    
        //tw->scrollToItem(item,QAbstractItemView::PositionAtCenter); //滚动条滚到指定项目
        //参数1  项目指针
        //参数2:QAbstractItemView::EnsureVisible    确保滚动后项可见
        //QAbstractItemView::PositionAtTop    确保滚动后项在视口的顶部
        //QAbstractItemView::PositionAtBottom   确保滚动后项在视口的底部
        //QAbstractItemView::PositionAtCenter   确保滚动后项在视口的中心
    
        int i;
        //i=tw->column(item);//返回项目的列序号
        //空项目返回-1
    
        //i=tw->columnCount();  //返回表格列的总数
        //i=tw->currentRow();  //返回表格当前行序号
        //i=tw->currentColumn();  //返回表格当前列序号
    
        //item=tw->currentItem();  //返回当前项目的指针
    
        //tw->editItem(item);  //如果项目是可编辑的,则开始编辑该项目
    
        //item=tw->horizontalHeaderItem(2);//返回指定列的标题项目指针
        //如果没有设置标题,返回空指针
    
        //QList<QTableWidgetItem *> items=tw->selectedItems();//返回所有选中项目的指针
        //(0xdb929559a0, 0xdb92955620, 0xdb92956b20, 0xdb92954f90)
    
        QPushButton* btn1=new QPushButton("按钮1");
        //tw->setCellWidget(8,1,btn1); //在指定单元格设置一个空间
        //参数1 参数2 单元格行序号和列序号
    
        //tw->removeCellWidget(8,1);//删除指定单元格的控件
    
        //tw->setCurrentCell(1,2);  //设置当前单元格
    
        //tw->setCurrentItem(item);  //设置当前项目
    
        QTableWidgetItem* item1=new QTableWidgetItem("化学");
        //tw->setHorizontalHeaderItem(2,item1);  //设置指定列的水平标题
        //setVerticalHeaderItem(int row, QTableWidgetItem *item)  设置指定行的垂直标题
    
        //tw->sortItems(2,Qt::DescendingOrder);  //对指定列进行排序
        //参数1 列序号
        //参数2: Qt::AscendingOrder  升序--默认
        //Qt::DescendingOrder   降序
    
        //item=tw->takeItem(0,2);  //指定单元格移除项目--项目不删除
        //返回项目指针
    
        //QTableWidgetItem * QTableWidget::takeVerticalHeaderItem(int row) //移除表格中的垂直标题头
        //QTableWidgetItem * verticalHeaderItem(int row) //返回表格中的垂直标题头
    
    
    
        //tw->item(0,2)->setFlags(Qt::ItemIsUserCheckable);//设置指定单元格的状态
        //Qt::ItemIsEditable   不能编辑--只读
        //Qt::ItemIsSelectable  不能选中
    
        //tableWidget->horizontalHeader()->setStyleSheet(“image: url(:/img/a.png);image-position:left; “); //设置表头的样式。
    
    
    
    
    
        //qDebug()<<item->text();
    }

    实例下载地址:https://share.weiyun.com/5XJEW44

  • 相关阅读:
    NEC 框架规范 css reset
    NEC 工程师规范
    NEC html规范
    【bzoj2839】【集合计数】容斥原理+线性求阶乘逆元小技巧
    【bzoj1562】【[NOI2009]变换序列】匈牙利算法的性质利用
    【bzoj4808】【马】二分图最大点独立集+简单感性证明
    【hdu1150】【Machine Schedule】二分图最小点覆盖+简单感性证明
    【bzoj4950】【 [Wf2017]Mission Improbable】贪心+二分图匹配
    【bzoj4443】【[Scoi2015]小凸玩矩阵】二分+二分图最大匹配
    【bzoj1977】【严格次小生成树】倍增维护链上最大次大值
  • 原文地址:https://www.cnblogs.com/liming19680104/p/11504141.html
Copyright © 2011-2022 走看看