문제가 얼마나되는지 또는 최종 결과가 마음에 들지는 모르겠지만 가능해야합니다. 그러나 간단히 말해서 ...
QPushButton
을 부모로 사용하여 창을 만듭니다 (나는 QListWidget
이 창 또는 다른 레이아웃 인 QWidget
에 있다고 가정합니다). 부모 위젯이 무엇이든간에, 그것은 버튼의 위치 좌표에 대한 참조 프레임이됩니다.
그러면 버튼을 QWidget::pos
과 위치시킬 필요가 있습니다. 트릭은 언제 어디서입니다.
위치가 부모와 관련되어 있으므로 부모의 너비와 높이를 QWidget::size()
으로 가져와 단추의 너비와 높이 (QWidget::frameSize()
)를 빼고 그에 따라 새 위치를 설정해야합니다.
상위 위젯의 각 크기 조정 이벤트에 대해이 작업을 수행해야합니다. 따라서 한 가지 방법은 부모 창에 QWidget::resizeEvent()
을 다시 구현하고 거기에서 버튼을 배치하는 것입니다.
이 테스트되지 않은 상태입니다 ...
QPushButton* button = new QPushButton(this); // parent is current QWidget
button->show();
...
void MyWidget::resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE
{
QSize btnSize = button->frameSize();
QSize containerSize = this->size();
int newX = containerSize.width() - btnSize.width() - 10; // 10 is arbitrary margin
int newY = containerSize.height() - btnSize.height() - 10;
// position the button
button->move(newX, newY);
// call the superclass handler: substitute the actual superclass here
QWidget::resizeEvent(event);
}
당신이 가장 가능성이 더 아마도 꽤 물건을 조정할 필요가있을 것이다, 그러나 그것은 일반적인 생각해야한다. 핵심은 처음에 표시 될 때를 포함하여 부모의 각 크기 조정시 버튼 위치를 변경하는 것입니다.
HTH
레이아웃을 사용하지 않습니까? – TCouch
@ TCouch 글쎄, 나는이 어색한 빈 공간을 남겼다. 단추 아래에 단추를 놓고 버튼의 높이와 동일한 전체 스트립이 비어 있었고 단추는 약간의 공간 만 사용했습니다. – madasionka
스크린 샷을 보는 것이 유용 할 수도 있습니다. – TCouch