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;
QMap<QString,QString>map;
QModelIndexList indexes =ui->tableView->selectionModel()->selectedIndexes();
unt()==0)
{
showmessage(QObject::tr("select nothing"));
return;
}
QModelIndex index;
int k=0;
foreach(index,indexes){
int lumn();
int w();
if(k==0)
{
minCol=col;
minRow=row;
}
if(col>maxCol)maxCol=col;
if(row>maxRow)maxRow=row;
QString del()->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
复制出的内容如下:
2849752393
1223852652
1502652698
1759152753
view ui框架2297252865

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。