我有一个父窗口小部件(长方形),我想在其中放置一个子窗口小部件。孩子的位置应该是可配置的。按下按钮时,子项将动态添加到父窗口小部件。按下按钮时,会创建一个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答案 0 :(得分:0)
我已按照建议使用布局解决了这个问题。
我在parentWidget上放置了一个QGridLayout,并将子窗口小部件放在其中。然后我使用了QGridLayout的'setColumnMinimumWidth'和'setRowMinimumHeight'来获得正确的像素坐标。