#include "widget.h" #include #include #include #include #include #include #include #include Widget::Widget(QWidget *parent) : QWidget(parent) { this->resize(800,500); m_pTableView=new QTableView(this); QVBoxLayout *mainLayout=new QVBoxLayout(this); mainLayout->addWidget(m_pTableView); mainLayout->setMargin(0); mainLayout->setSpacing(0); this->setLayout(mainLayout); InitViewAction(); m_pTableView->setSelectionBehavior(QAbstractItemView::SelectRows); //选中整行 //m_pTableView->setContextMenuPolicy(Qt::ActionsContextMenu); m_pTableView->setContextMenuPolicy(Qt::CustomContextMenu); connect(m_pTableView, &QTableView::customContextMenuRequested, this, &Widget::onShotListContextMenuClicked); QStringList strList; strList<SetHeadData(strList); m_pTableView->setModel(m_pModel); m_pTableView->verticalHeader()->hide(); QList modelData; QFile file("C:/Users/dujia/Desktop/bbb.txt"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; while (!file.atEnd()) { QString strLine=file.readLine(); QStringList strList=strLine.split("&"); if(strList.size()<7) { continue; } ModelItem item; item.id=strList[0]; item.name=strList[1]; item.one=strList[2]; item.two=strList[3]; item.three=strList[4]; item.four=strList[5]; item.five=strList[6]; item.six=""; modelData.append(item); } m_pModel->SetModelData(modelData); // QTableWidget *widget=new QTableWidget(this); // //widget->setRowCount(1000000); // widget->setColumnCount(8); // QStringList strList; // strList<setHorizontalHeaderLabels(strList); // QVBoxLayout *mainLayout=new QVBoxLayout(this); // mainLayout->addWidget(widget); // mainLayout->setMargin(0); // mainLayout->setSpacing(0); // this->setLayout(mainLayout); // QFile file("C:/Users/dujia/Desktop/bbb.txt"); // if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) // return; // int i=0; // widget->setRowCount(100000); // while (!file.atEnd()) { // QString strLine=file.readLine(); // QStringList strList=strLine.split("&"); // if(strList.size()<8) // { // continue; // } // widget->setItem(i,0,new QTableWidgetItem(strList[0])); // widget->setItem(i,1,new QTableWidgetItem(strList[1])); // widget->setItem(i,2,new QTableWidgetItem(strList[2])); // widget->setItem(i,3,new QTableWidgetItem(strList[3])); // widget->setItem(i,4,new QTableWidgetItem(strList[4])); // widget->setItem(i,5,new QTableWidgetItem(strList[5])); // widget->setItem(i,6,new QTableWidgetItem(strList[6])); // widget->setItem(i,7,new QTableWidgetItem(strList[7])); // i++; // } } Widget::~Widget() { } void Widget::InitViewAction() { m_pMenu = new QMenu(this); QAction *qcOnlyAction = new QAction(tr("QC only"), this); QAction *submitJobAction = new QAction(tr("Generate SEGD"), this); //QAction *killAllJobAction = new QAction(tr("Kill all jobs"), this); QAction *commentsAction = new QAction(tr("Comments..."), this); QAction *deleteAction = new QAction(tr("Delete..."), this); QAction *importAction = new QAction(tr("Import Shot Data"), this); QAction *allAction = new QAction(tr("All"), this); QAction *returnAction = new QAction(tr("Return"), this); m_pMenu->addSeparator(); m_pMenu->addAction(importAction); m_pMenu->addSeparator(); m_pMenu->addAction(qcOnlyAction); m_pMenu->addAction(submitJobAction); m_pMenu->addSeparator(); m_pMenu->addSeparator(); m_pMenu->addAction(deleteAction); m_pMenu->addSeparator(); m_pMenu->addAction(allAction); m_pMenu->addAction(returnAction); m_pMenu->addSeparator(); m_pMenu->addAction(commentsAction); m_pMenu->addSeparator(); m_pMenu->hide(); connect(importAction,&QAction::triggered,this,&Widget::onImportTriggered); connect(deleteAction,&QAction::triggered,this,&Widget::onDeleteTriggered); connect(allAction,&QAction::triggered,this,&Widget::onDeleteALLTriggered); } void Widget::onShotListContextMenuClicked() { m_pMenu->move(QCursor::pos()); m_pMenu->show(); } void Widget::onImportTriggered() { QItemSelectionModel *selections = m_pTableView->selectionModel(); QModelIndexList selected = selections->selectedIndexes(); QList rowList; QMap rowMap; foreach (QModelIndex index, selected) { rowMap.insert(index.row(), 0); } int rowToDel; QMapIterator rowMapIterator(rowMap); while (rowMapIterator.hasNext()) { rowMapIterator.next(); rowToDel = rowMapIterator.key(); QModelIndex indexsix = m_pModel->index(rowToDel,7); m_pModel->setData(indexsix,"hello"); } } #include void Widget::onDeleteTriggered() { QItemSelectionModel *selections = m_pTableView->selectionModel(); QModelIndexList selected = selections->selectedIndexes(); QList rowList; QMap rowMap; foreach (QModelIndex index, selected) { rowMap.insert(index.row(), 0); } int rowToDel; QMapIterator rowMapIterator(rowMap); rowMapIterator.toBack(); //将迭代器移动到最后 while (rowMapIterator.hasPrevious()) { rowMapIterator.previous(); rowToDel = rowMapIterator.key(); rowList.append(rowToDel); } m_pModel->SetDeleteList(rowList); //传入需要删除的数组 m_pModel->removeRows(rowList.last(),rowList.size()); m_pTableView->setCurrentIndex(QModelIndex()); //设置当前项为不存在的项,则为不选中 } void Widget::onDeleteALLTriggered() { int count=m_pModel->rowCount(); m_pModel->removeRows(0,count); }