使用Qt - C ++

时间:2017-11-01 13:11:59

标签: c++ qt qt5

是的,我已经搜索了stackoverflow并实现了至少3个我看过的东西,没有成功。我是C ++的新手,尝试用SoloLearn学习,但你只有基础知识。

我正在尝试开发一个OpenSource软件来批量创建电子邮件签名,并以各种格式导出这些签名。

到目前为止,我能够在Windows上搜索背景图像,将其显示为预览,但是,我无法在图像中插入任何文本。这是我的代码:

void CriaAssinaturas::on_selecionarImagemDeFundo_clicked()
    {
        QString filter = "All Files (*.*) ;; JPEG File (*.jpeg) ;; BMP File (*.bmp)";
        QString file_name = QFileDialog::getOpenFileName(this, "Carregar uma imagem", QDir::homePath(), filter) ;
        QMessageBox::information(this, "Arquivo selecionado:", file_name);
        QFile file(file_name);
        file.open(QIODevice::ReadWrite);
        QPixmap previaAssinatura(file_name);
        ui->exemploAssinatura->setPixmap(previaAssinatura);
}
//    QString nome = ui->nomeInput->text();
//    ui->showNome->setText(nome);

//    QPainter pintaNome;
//    pintaNome.drawText(630,170,"Print something");

void CriaAssinaturas::on_salvarAssinatura_clicked()
{
//  ui->exemploAssinatura->grab().save("fileName.jpg");
    QString file_name = QFileDialog::getSaveFileName(this, "Salvar uma imagem", QDir::homePath());
    QMessageBox::information(this, "Arquivo salvo em QDir::homePath()", file_name);

}

void CriaAssinaturas::on_criarAssinatura_clicked()
{
    QString txt = ui->nomeInput->text();
    ui->showNome->setText(txt);
}

1 个答案:

答案 0 :(得分:0)

假设您已经在ui->exemploAssinatura上设置了像素图,并且ui->showNome QLabel ,您希望在on_criarAssinatura_clicked()中显示重叠的文字。 :

QPixmap pixmap(ui->exemploAssinatura->pixmap());
QPainter pintaNome(&pixmap);

pintaNome.drawText(630, 170, ui->nomeInput->text());
ui->showNome->setPixmap(pixmap);

查看QPainterQFont,了解如何在文字中添加一些艺术效果。