我有一个父小部件(重角形状),我想在它里面放置一个子小部件。孩子的位置应该是可配置的。当按下按钮时,会动态地将子部件添加到父部件中。当按下按钮时,会创建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()是正确的(绘制的矩形具有小部件的大小。但是,似乎sizeHint().width() = -1在"SetChildPosition“函数中。在我调用"SetChildPosition“之前,是否有任何方法更新该大小提示?
发布于 2016-03-24 15:24:25
我用建议的布局解决了这个问题。
我在QGridLayout上放置了一个parentWidget,并将子小部件放在其中。然后,我使用“setColumnMinimumWidth”和“setRowMinimumHeight”的QGridLayout得到它在正确的像素坐标。
https://stackoverflow.com/questions/36200712
复制相似问题