0
私は親ウィジェット(矩形)を持っており、その中に子ウィジェットを配置したいと思います。子供の位置は設定可能でなければなりません。子ボタンは、ボタンが押されると、親ウィジェットに動的に追加されます。ボタンが押されると、ChildWidgetのインスタンスが作成されます。 PaintEventが呼び出された時点でサイズを更新する方法子ウィジェットのヒント
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);
}
、のsizehint()が描画された長方形は、ウィジェットのサイズを有する(正確であるが、それはのsizehint()と思われる。幅()= -1「SetChildPositionで私が示唆したように、レイアウトを使用して問題を解決したSetChildPosition 『?
これを処理する正しい方法は、親ウィジェット用にレイアウトを設定し、親ウィジェットにレイアウトに子ウィジェットを追加することです。ウィジェットを適切に配置します。 –
どうしたらうまくいくのですか? childwidgetの位置も設定可能でなければなりません。例えば、ピクセル位置(100,100)に設定することが可能でなければならない。 – Frank
あなたの質問には重要な詳細が見当たらないかもしれませんが、このユースケースがどれほど有効かわかりません。任意のウィジェットでは、子ウィジェットがレイアウトを使用せずにその親に強制的に入ることができないように見えます。子どもが親の重要な部分に自分自身を位置づけたらどうなるでしょうか?親がサイズ変更されたとき、子供はどのように適切に対応するでしょうか?ユーザ定義のウィジェット型のセットについては、子ウィジェットが新しいメンバ関数を介して親に対して所望の位置情報を伝達することが可能である。 –