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