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 <QWidget>

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 <QPainter>
#include <QWidget>

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函數。這些函數的使用均可以在幫助手冊中找到。
最終的運行結果如下圖所示。
運行結果圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章