1. 定義一個帶界面的類QFormTable,繼承QWidget,該類的實現如下
頭文件
#include <QWidget>
#include "ui_QFormTable.h"
class QFormTable : public QWidget
{
Q_OBJECT
public:
QFormTable(QWidget *parent = Q_NULLPTR);
~QFormTable();
private:
void paintEvent(QPaintEvent *event);
private:
Ui::QFormTable ui;
};
源文件
#include "QFormTable.h"
#include <QgraphicsItem>
QFormTable::QFormTable(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
}
QFormTable::~QFormTable()
{
}
void QFormTable::paintEvent(QPaintEvent *event)
{
QGraphicsScene * scene = new QGraphicsScene(QRect(0, 0, width(), height()));
ui.graphicsView->setScene(scene);
QGraphicsRectItem * item = new QGraphicsRectItem(QRect(width()/3, height()/3, width()/2, height()/2));
item->setFlags(QGraphicsRectItem::ItemIsSelectable | QGraphicsRectItem::ItemIsFocusable);
QPen pen;
pen.setWidth(2);
item->setPen(pen);
scene->addItem(item);
}
2. 在界面添加一個控件QGraphicsView,用於顯示場景中的內容。
上述源文件重寫了paintEvent事件,給graphicsView添加了一個場景scene,然後可以新建各種圖形的QGraphicsItem,
把這些item加到場景scene中。可以給item設置顏色,是否可選,是否可設焦點。