如何更新子窗口小部件的sizeHint

时间:2016-03-24 12:54:25

标签: c++ qt

我有一个父窗口小部件(长方形),我想在其中放置一个子窗口小部件。孩子的位置应该是可配置的。按下按钮时,子项将动态添加到父窗口小部件。按下按钮时,会创建一个ChildWidget实例。

ChildWidget::ChildWidget(QWidget* pParent)
{
    setParent(pParent)

    show();

    SetChildPosition();

}

/*********** Protected methods ************/

void ChildWidget::paintEvent(QPaintEvent* pEvent)
{
   QPainter painter(this);
   painter.drawRect(0, 0, sizeHint().width() - 1, sizeHint().height() - 1);
   resize(sizeHint());

   QWidget::paintEvent(pEvent);
}

/*********** Private methods ************/

void ChildWidget::SetChildPosition()
{
   QPoint childPos = QPoint(parentWidget()->width() - sizeHint().width() - 5, 5);

   move(childPos);
}

在调用PaintEvent时,sizeHint()是正确的(绘制的矩形具有窗口小部件的大小。但是在" SetChildPosition&#中似乎sizeHint()。width()= -1 34;功能。有没有办法在调用" SetChildPosition"?

之前更新sizehint

1 个答案:

答案 0 :(得分:0)

我已按照建议使用布局解决了这个问题。

我在parentWidget上放置了一个QGridLayout,并将子窗口小部件放在其中。然后我使用了QGridLayout的'setColumnMinimumWidth'和'setRowMinimumHeight'来获得正确的像素坐标。