Qt QTableWidget에서의 Copy & Paste & Delete 방법
CustomTableWidget 클래스 생성
void CustomTableWidget::keyPressEvent(QKeyEvent *event)
{
QModelIndexList selectedModel=selectedIndexes(); //cell selected
qSort(selectedModel.begin(),selectedModel.end()); //ASC sort
if(event->matches(QKeySequence::Delete)) //del key
{
foreach (QModelIndex index, selectedModel)
{
QTableWidgetItem *delItem=item(index.row(),index.column());
if(delItem!=NULL)
{
item(index.row(),index.column())->setText("");
}
}
}
if(event->matches(QKeySequence::Copy)) //ctrl + c
{
if(selectedModel.isEmpty())
{
return;
}
copyIndexList=selectedModel;
}
if(event->matches(QKeySequence::Paste)) //ctrl + v
{
if(!copyIndexList.isEmpty())
{
if(selectedModel.isEmpty())
{
return;
}
int startRow=selectedModel.first().row();
int startColumn=selectedModel.first().column();
int copyListFirstRow=copyIndexList.first().row();
int copyListFirstColumn=copyIndexList.first().column();
foreach (QModelIndex index, copyIndexList)
{
if(copyListFirstRow!=index.row())
{
startRow+=index.row()-copyListFirstRow;
copyListFirstRow=index.row();
}
if(copyListFirstColumn!=index.column())
{
startColumn+=index.column()-copyListFirstColumn;
copyListFirstColumn=index.column();
}
setItem(startRow,startColumn,new QTableWidgetItem(item(index.row(),index.col umn())->text()));
}
}
}
}