Название: копирование строк из таблицы в письмо (Word)
Отправлено: mokynis от Июнь 10, 2016, 09:35
требуется выделенные в таблице строки отправлять по почте. Сами строки собираются в QString, а потом в clipboard() без проблем, а как потом их вставить в письмо или хоть в текстовый редактор, чтобы видеть именно таблицу, а не html-код? Может не понятно спросил... В общем, есть код QModelIndexList tlst=ui->tabSpis->selectionModel()->selectedIndexes(); QString str_cpy="<html><body><head><title>проба</title></head>" "<table border=1>" "<tr><th width=50>День</th><th width=150>Клиент</th><th width=50>Количество</th></tr>"; int cur_row=0;
for(int i=0;i<tlst.count();++i) { if(tlst.at(i).row()==cur_row) continue; //чтобы не повторялся, пока на другую строку не перейдет else { cur_row=tlst.at(i).row();
str_cpy+="<tr><td>"+ui->tabSpis->model()->data(ui->tabSpis->model()->index(tlst.at(i).row(),2)).toString()+"</td>" "<td>"+ui->tabSpis->model()->data(ui->tabSpis->model()->index(tlst.at(i).row(),4)).toString()+"</td>" "<td>"+ui->tabSpis->model()->data(ui->tabSpis->model()->index(tlst.at(i).row(),12)).toString()+"</td></tr>"; } } str_cpy+="</table></body></html>"; //этот код корректно открывается в браузере или OpenOffice.Calc, например
QApplication::clipboard()->setText(str_cpy); //и забирается в буфер QMessageBox::information(0,tr("Copying"),tr("Ok"),QMessageBox::Ok);
Может вообще не так надо собирать данные? Нет, можно, конечно, в духе DOS'овской псевдографики нарисовать псевдотаблицу, но хотелось бы покрасивее как-нибудь
Название: Re: копирование строк из таблицы в письмо (Word)
Отправлено: Bepec от Июнь 10, 2016, 17:14
smtp поддерживает html. Вроде там просто mime type надо выставить правильный.
Название: Re: копирование строк из таблицы в письмо (Word)
Отправлено: GreatSnake от Июнь 10, 2016, 19:09
C++ (Qt) void QClipboard::setMimeData(QMimeData * src, Mode mode = Clipboard); void QMimeData::setHtml(const QString & html);
Название: Re: копирование строк из таблицы в письмо (Word)
Отправлено: mokynis от Июнь 13, 2016, 09:50
void QMimeData::setHtml(const QString & html); Спасибо! Самое оно!
|