Не рисуется один кастомный(QPainter) виджет над другим, почему? Как исправить?
Вот код кастомного виджета, в нем должен рисоваться еще один кастомный виджет, а конкретно SitAtTheTable d(p, this); Я как только уже не пробовал - не понимаю, почему он не отображается и я вижу только PokerTable . PokerTable.h
class PokerTable : public QWidget
{
Q_OBJECT
public:
PokerTable(QWidget *parent = nullptr);
~PokerTable();
private:
protected:
void paintEvent(QPaintEvent *event) override;
};
PokerTable.cpp
void PokerTable::paintEvent(QPaintEvent* event)
{
Q_UNUSED(event);
QPainter painter(this);
int side = qMin(width(), height());
if((width() - height()) / 2 > 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);
QPoint p(-50, 50);
SitAtTheTable d(p, this);
d.show();
}
SitAttheTable.h
class SitAtTheTable : public QWidget
{
Q_OBJECT
public:
SitAtTheTable(const QPoint& pos, QWidget *parent = nullptr);
~SitAtTheTable();
private:
const QPoint* pos;
QWidget *parent = nullptr;
protected:
void paintEvent(QPaintEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
/*void mouseReleaseEvent(QMouseEvent *event) override;*/
};
SitAttheTable.cpp
#include "SitAtTheTable.h"
SitAtTheTable::SitAtTheTable(const QPoint &pos, QWidget *parent)
: QWidget(parent),
pos(&pos),
parent(parent)
{
}
SitAtTheTable::~SitAtTheTable()
{
}
void SitAtTheTable::paintEvent(QPaintEvent* event)
{
Q_UNUSED(event);
QPainter painter(parent);
/*int side = qMin(width(), height());
if((width() - height()) / 2 > 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);*/
QRect sitButtonRect(*pos, QSize(40,20));
painter.drawText(sitButtonRect, Qt::AlignCenter, QString("Place"));
painter.fillRect(sitButtonRect,QColor(100,100,100,100));
printf("Hello!!\n");
}
void SitAtTheTable::mousePressEvent(QMouseEvent *event)
{
qDebug() << "Clicked";
}
main.cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
PokerTable w;
w.show();
return a.exec();
}
Я много чего испробовал и рисуется только в одном единственном случае. На мой взгляд он отвратителен и я бы с удовольствием хотел бы спросить совета у комьюнити, как отрисовать мой кастомный виджет и почему он не рисуется в этом случае.