QT绘图:实现将没有布局的界面进行缩放显示
前言:
在实际开发过程中,会遇到一些无法使用布局的界面,如果将这样的界面直接放入另一个界面,大小不合适就会出现页面太丑的情况。而解决的方法可以是重构界面,但是一些界面过于复杂,重构很难实现。那么笔者给大家介绍一种新的方法。
利用QWidget的rander函数,不懂的可以查看QT文档。
qt官方文档:
这个函数的主要作用就是将界面渲染到目标中,这个目标可以是QPixmap。
而我们则可以利用将页面渲染之后,重新缩放大小,然后放置到需要的页面上。代码如下:
void MainWindow::paintEvent(QPaintEvent* event)
{
QPainter painter(this);
//m_pWidget,需要缩小的界面
QPixmap pixmap(m_pWidget->width(),m_pWidget->height()); //QPixmap用于绘图,pixmap的大小为需要缩放页面的大小
m_pWidget->render(&pixmap); //widget界面转化为图片
//scaled实现界面的放大缩小,Qt::KeepAspectRatio 等比例缩放 Qt::SmoothTransformationd 抗锯齿
QPixmap pixmap2=pixmap.scaled(width()*2,height()*2,Qt::KeepAspectRatio,Qt::SmoothTransformation);
painter.drawPixmap(0,0,width()*2,height()*2,pixmap2); //绘图
}
以上代码在paintEvent函数进行,需要大家在头文件中重写QT绘图事件。
具体的步骤和细节都在代码中体现,不懂的可以评论区留言相互学习!