文档详情

Qt QTableView 上加右键弹出菜单, 并复制选中的单元格内容到剪贴板中.pdf

发布:2017-05-19约1.89千字共4页下载文档
文本预览下载声明
Qt QTableView 上加右键弹出菜单, 并复制选中的单元格内 容到剪贴板中。 private: QAction *copyAct; private slots: void copyData(); ui-tableView-setSelectionMode(QAbstractItemView::ContiguousSelectio n); //设置为连续选择模式 ui-tableView-setContextMenuPolicy(Qt::ActionsContextMenu); //设置为 action菜单模式 ui-tableView-addAction(this-copyAct); //感觉复制多选的单元格,自己想的比较笨的办法,不知道是否还有更好的办法 void MainWindow::copyData() { int maxCol=0; int maxRow=0; int minCol=0; int minRow=0; QMapQString,QString map ; QModelIndexList indexes =ui-tableView-selectionModel()-selectedIndexes(); if (indexes.count()==0) { showmessage(QObject::tr(select nothing)); return; } QModelIndex index; int k=0; foreach(index, indexes) { int col=index.column(); int row=index.row(); if (k==0) { minCol=col; minRow=row; } if (colmaxCol)maxCol=col; if (rowmaxRow)maxRow=row; QString text = index.model()-data(index, Qt::EditRole).toString(); map[QString::number(row) + , + QString::number(col)]=text; k++; } QString rs=; for (int row=minRow;row=maxRow;row++) { for (int col=minCol;col=maxCol;col++) { if (col!=minCol)rs+=\t; rs+= map[QString::number(row) + , + QString::number(col)]; } rs+=\r\n; } QClipboard *board = QApplication::clipboard(); board-setText(rs); } 多选单元格的效果 鼠标右键选择 copy 复制出的内容如下: 28497 52393 12238 52652 15026 52698 17591 52753 22972 52865
显示全部
相似文档