Qt5_在TabWidget中画图

问题提出:
想在TabWidget中进行画图操作,使得它能够显示我想要的图像,如网络拓扑图等。
问题解决:
首先创建QTabWidget对象:

mainwindow.h文件中的内容

    QTabWidget *topology;

mainwindow.cpp文件中的内容

    topology = new QTabWidget(parent); 
    imagewidget = new ShowWidget(parent);  //显示拓扑图的Tab界面的子界面

showwidget.h文件中的内容

#ifndef SHOWWIDGET_H
#define SHOWWIDGET_H

#include 

class ShowWidget : public QWidget
{
    Q_OBJECT
public:
    explicit ShowWidget(QWidget *parent = 0);
    void paintEvent(QPaintEvent *event);

signals:

public slots:
};

#endif // SHOWWIDGET_H

showwidget.cpp文件中的内容

#include "showwidget.h"
#include 
#include 

ShowWidget::ShowWidget(QWidget *parent) : QWidget(parent)
{

}

void ShowWidget::paintEvent(QPaintEvent *event)
{
    QPainter paint(this);
    paint.setPen(Qt::DashLine);
    paint.setRenderHint(QPainter::Antialiasing, true);
    QPixmap ap1("ap1.png");
    QPixmap ap2("ap2.png");
    QPixmap ap3("ap3.png");
    QPixmap ap4("ap4.png");
    QPixmap ap5("ap5.png");
    QPixmap ac("ac.png");
    paint.drawPixmap(700,100,ac);
    paint.drawPixmap(100,200,ap1);
    paint.drawPixmap(400,200,ap2);
    paint.drawPixmap(700,200,ap3);
    paint.drawPixmap(1000,200,ap4);
    paint.drawPixmap(1300,200,ap5);
    paint.drawLine(720,150,100,200);
    paint.drawLine(720,150,400,200);
    paint.drawLine(720,150,700,200);
    paint.drawLine(720,150,1000,200);
    paint.drawLine(720,150,1300,200);
}

这里对QWidget对象的paintEvent函数进行了重写,使用到QPaint对象的drawPixmap函数和drawLine函数。这些函数的使用均可以在帮助手册中找到。
最终的运行结果如下图所示。
Qt5_在TabWidget中画图_第1张图片

你可能感兴趣的:(Qt5学习笔记)