是的,我已经搜索了stackoverflow并实现了我看到的至少5件事中的3件,但没有成功。我是C++新手,尝试使用SoloLearn学习,但您只得到了基础知识。
我正在尝试开发一个开源软件来批量创建电子邮件签名,并以各种可能的格式导出这些签名。
到目前为止,我可以在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);
}
假设您已经在ui->exemploAssinatura
上设置了一个像素图,并且您想要在其中显示叠加文本的 QLabel ui->showNome
,on_criarAssinatura_clicked()
试试这个:
QPixmap pixmap(ui->exemploAssinatura->pixmap());
QPainter pintaNome(&pixmap);
pintaNome.drawText(630, 170, ui->nomeInput->text());
ui->showNome->setPixmap(pixmap);
查看QPainter和QFont,了解如何为文本添加一些艺术效果。