我想在QLabel兩點之間編程方式添加行。從我發現的看來,唯一的辦法就是創建一個QWidget的子類來改變PaintEvent()保護的方法。繪製線條編程使用Qt
所以,我創建QWidget的一類新的 'QLineObject'。這是我的頭文件:
class QLineObject : public QWidget
{
Q_OBJECT
public:
QLineObject();
QLineObject(Point from, Point to);
protected:
void paintEvent(QPaintEvent *event);
private:
Point fromPoint;
Point toPoint;
};
和實現文件:
QLineObject::QLineObject()
{
Point point;
point.x = 0.0;
point.y = 0.0;
fromPoint = point;
toPoint = point;
}
QLineObject::QLineObject(Point from, Point to)
{
fromPoint = from;
toPoint = to;
}
void QLineObject::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawLine(fromPoint.x, fromPoint.y, toPoint.x, toPoint.y);
}
這裏的來的問題。我找不到如何在我的主窗口中添加這個小部件。如果我創建一個新的QLineObject實例並調用show(),它將彈出一個新窗口。我相信我只是錯過了一些東西。有人想幫助我嗎?我想知道如何創建並從我的主窗口構造函數的其他地方添加它。
謝謝!
有[另一個完整的答案(http://stackoverflow.com/a/19367454/1329652),顯示該怎麼辦疊加在一般情況下,和[另一個](http://stackoverflow.com/a/11044239/1329652),顯示如何繪製覆蓋線。 –
它的[對QDodckWidget停靠窗口小部件的頂漆/繪圖]重複(http://stackoverflow.com/questions/11034838/paint-draw-on-top-of-docked-widgets-in-qdodckwidget)。對另一個問題的回答顯示了你所問的一切; QDockWidget本身並不相關。 –