QT窗口小部件仅在使用SetFixedSize(...)时显示

时间:2019-01-27 21:38:46

标签: c++ qt custom-widgets

我在设计器中创建了一个自定义Widget:并将QWidget提升为TreeItem(我自己)。但是,当我运行代码时,看不到窗口小部件。看到它的唯一方法是使用setFixedSize(100, 100)。甚至resizesetGeometry都不起作用。 我希望能够看到我的自定义窗口小部件而无需为其提供固定大小。

TreeItem.h

#ifndef TREEITEM_H
#define TREEITEM_H

#include <QWidget>
#include <QRect>

class TreeItem : public QWidget
{
    Q_OBJECT
public:
    explicit TreeItem(QRect rect, QWidget *parent = nullptr);

    virtual void paintEvent(QPaintEvent*);

signals:

public slots:

protected:
    QRect m_rect;
    QFont m_font;
};

#endif // TREEITEM_H

TreeItem.cpp

#include "treeitem.h"

TreeItem::TreeItem(QRect rect, QWidget *parent): QWidget(parent)
{
    m_rect = rect;
    m_font = QFont("Arrial", 20);

    setFixedSize(100, 100); // doesn't show up without this line
}

void TreeItem::paintEvent(QPaintEvent*)
{
    QPainter painter(this);

    painter.drawLine(0, 0, 100, 100);
}

0 个答案:

没有答案