Russian Qt Forum
Май 03, 2024, 12:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: копирование строк из таблицы в письмо (Word)  (Прочитано 3151 раз)
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« : Июнь 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'овской псевдографики нарисовать псевдотаблицу, но хотелось бы покрасивее как-нибудь
« Последнее редактирование: Июнь 10, 2016, 14:36 от mokynis » Записан

QT4, Qt5, Qt6 Debian, ArchLinux
Bepec
Гость
« Ответ #1 : Июнь 10, 2016, 17:14 »

smtp поддерживает html. Вроде там просто mime type надо выставить правильный.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Июнь 10, 2016, 19:09 »

Код
C++ (Qt)
void QClipboard::setMimeData(QMimeData * src, Mode mode = Clipboard);
void QMimeData::setHtml(const QString & html);
Записан

Qt 5.11/4.8.7 (X11/Win)
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #3 : Июнь 13, 2016, 09:50 »

Цитировать
void QMimeData::setHtml(const QString & html);
Спасибо! Самое оно!
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.079 секунд. Запросов: 23.