Как установить кнопку на фиксированное расстояние от другого виджета?

Положение кнопки Place 1

Первое

Положение кнопки Place 2

Второе

PokerTable.cpp


PokerTable::PokerTable(QWidget *parent)
    : QWidget(parent),
      sitAtTheTableButton(new SitPlace(this))
{

}

void PokerTable::paintEvent(QPaintEvent* event)
{
    Q_UNUSED(event);
    QPainter painter(this);

    int side = qMin(width(), height());
    if((width() - height())  > 0)
        painter.setViewport((width() - height()) / 2, (height() - side) / 2, side, side);
    else
        painter.setViewport(0, (height() - side) / 2, side, side);
    painter.setWindow(-100, -100, 200, 200);


    QBrush brushPokerTable(QColor(8,115,83));
    QPen penEdgeOfTable(QColor(85,110,107), 10);
    QPen penPokerTableCardArea(QColor(146,170,70), 1);
    QPen penShadows(QColor(63, 63, 63, 200), 2);

    QRect table(QPoint(-100, -50), QPoint(100,50));
    QRect rectCardArea(QPoint(-80, -30), QPoint(80,30));
    QRect rectEdgeOfTable(QPoint(-100, -50), QPoint(100,50));
    QRect rectOfShadows(QPoint(-96, -45), QPoint(96,45));

    painter.setBrush(brushPokerTable);
    painter.drawRoundedRect(table,30,30); //TODO:Calculate Rounder

    painter.setPen(penEdgeOfTable);
    painter.drawRoundedRect(rectEdgeOfTable,30,30);

    painter.setPen(penShadows);
    painter.drawRoundedRect(rectOfShadows,30,30);

    painter.setPen(penPokerTableCardArea);
    painter.drawRoundedRect(rectCardArea,15,15);



}

PokerTable::~PokerTable()
{
}

SitAtPlace.cpp

#include "SitPlace.h"
#include <QMouseEvent>


SitPlace::SitPlace(QWidget *parent):QWidget(parent)
{

}

SitPlace::~SitPlace()
{

}


void SitPlace::paintEvent(QPaintEvent* event)
{

    Q_UNUSED(event);
    QPainter painter(this);
    QObject* p = parent();
    QWidget* parent = qobject_cast<QWidget*>(p);
 
    QRect sitButtonRect(QPoint(10,10), QPoint(40,20));
    painter.drawText(sitButtonRect, Qt::AlignCenter, QString("Place"));
    painter.fillRect(sitButtonRect,QColor(100,100,100,100));
}

void SitPlace::mousePressEvent(QMouseEvent *event)
{
    int x = event->x();
    int y = event->y();
    qDebug() << x << " " << y;
    qDebug()<<"mousePressEvent\n";
}

В чем суть, я не понимаю, как мне сделать так, чтобы кнопка Place всегда находилась на равноудаленном расстоянии от края стола и в момент ресайза ресайзилась вместе со столом и всегда была на одном расстоянии от стола.


Ответы (0 шт):