Phi*_*hil 8 qt copy uitableview
所以我有一个问题与我在这里看到的另一个问题非常密切相关,但是当我尝试在那里提出我的问题时,我没有得到任何答复,我希望将这个问题作为一个新问题,有人可以帮助我.基本上我只想复制我创建的表的一部分,以便将其粘贴到excel文件中.这就是我所拥有的:
QAbstractItemModel *abmodel = ui.tableview->model();
QItemSelectionModel *model = ui.tableview->selectionModel();
QModelIndexList list = model->selectionIndexes();
qSort(list);
QModelIndex index = list.first();
for(int i = 0; i < list.size(); i++)
{
QModelIndex index = list.at(i);
QString text = abmodel->data(index).toString();
copy_table.append(text);
if(index.row() != previous.row())
{
copy_table.append('\n');
}
else
{
copy_table.append('\t');
}
previous = index;
}
QClipboard *clipboard = QApplication::clipboard();
clipboard->setText(copy_table);
Run Code Online (Sandbox Code Playgroud)
这将复制一个列,但是当我尝试复制一行或说一个2x2子表时,行索引会搞乱,错误地为值指定行索引.有什么想法吗?
Phi*_*hil 13
好吧,已经弄清楚了,对不起浪费时间和看的人.
void TestCopyTable::on_pushButton_copy_clicked()
{
QAbstractItemModel *abmodel = ui.tableView->model();
QItemSelectionModel * model = ui.tableView->selectionModel();
QModelIndexList list = model->selectedIndexes();
qSort(list);
if(list.size() < 1)
return;
QString copy_table;
QModelIndex last = list.last();
QModelIndex previous = list.first();
list.removeFirst();
for(int i = 0; i < list.size(); i++)
{
QVariant data = abmodel->data(previous);
QString text = data.toString();
QModelIndex index = list.at(i);
copy_table.append(text);
if(index.row() != previous.row())
{
copy_table.append('\n');
}
else
{
copy_table.append('\t');
}
previous = index;
}
copy_table.append(abmodel->data(list.last()).toString());
copy_table.append('\n');
QClipboard *clipboard = QApplication::clipboard();
clipboard->setText(copy_table);
Run Code Online (Sandbox Code Playgroud)
}
归档时间: |
|
查看次数: |
8183 次 |
最近记录: |