刚开始学习QT不久,走了很多歪路,做界面时遇到很多的问题,现分享一下,如有不对,请大佬指正。参考了很多网上的代码,总结了一下,下面是把选中的tableView的内容导出到Excel表格的代码,tableView已经设置了单击是选中行
(
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);//设置选中模式为选中行 )
void querywindow::on_pB_export_clicked()//按钮事件 {
QString filepath = QFileDialog::getSaveFileName(this, tr("Save as..."),
"C:/Users/Desktop",
tr("EXCEL files (*.xls);;HTML-Files (*.txt);;"));
if (filepath != "")
{
int row = ui->tableView->currentIndex().row();
int col = ui->tableView->model()->columnCount();
QList<QString> list;
/*添加标题
QString Header;
QModelIndexList selectedRows = ui->tableView->selectionModel()->selectedRows();
for (int i = 0; i < col; i++)
{
Header.append(ui->tableView->model()->headerData(i, Qt::Horizontal, Qt::DisplayRole).toString() + "\t");
}
list.push_back(Header);*/
for (int i = 0; i <=row; i++)
{
QString rowStr = "";
for (int j = 0; j < col; j++){
QModelIndex index = ui->tableView->model()->index(i, j);
rowStr += ui->tableView->model()->data(index).toString() + "\t";
}
list.push_back(rowStr);
}
QTextEdit textEdit;
for (int i = 0; i < list.size(); i++)
{
textEdit.append(list.at(i));
}
QFile file(filepath);
if (file.open(QFile::WriteOnly | QIODevice::Text))
{
QTextStream ts(&file);
ts.setCodec("UTF-8");//判断是否用“utf-8”
ts << textEdit.document()->toPlainText();
file.close();
}else{
QMessageBox::information(this, "提示:","数据导出失败");
}
}
}