Russian Qt Forum

Qt => Общие вопросы => Тема начата: mokynis от Июнь 10, 2016, 09:35



Название: копирование строк из таблицы в письмо (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);
Спасибо! Самое оно!