需要 #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