两个地方调用saveToFile,但是传入的参数类型不同。可以按照以下的方式来实现。
template<class T> void saveToFile(QWidget *parent, T *saveable)
{
QString t;
QFileDialog fd(parent, t, QString());
fd.setAcceptMode(QFileDialog::AcceptSave);
fd.setDefaultSuffix("png");
fd.selectFile("test.png");
if (fd.exec() == QDialog::Accepted)
saveable->save(fd.selectedFiles().first());
}
void MainWindow::grabToFile()
{
QImage image = m_quickWidget->grabFramebuffer();
saveToFile(this, &image);
}
void MainWindow::renderToFile()
{
QPixmap pixmap(m_quickWidget->size());
m_quickWidget->render(&pixmap);
saveToFile(this, &pixmap);
}