我正在尝试在Qt布局中使小部件部分重叠。 我当前的布局如下,使用包含四个QHBoxLayout子项的QVBoxLayout实现:
我正在尝试重新组合同一花色的卡片,以实现类似于这样的效果(请注意,存在水平和垂直重叠):
hLayout[card.getSuit()-1]->addWidget(cardWidget, 0, align);
我正在尝试在Qt布局中使小部件部分重叠。 我当前的布局如下,使用包含四个QHBoxLayout子项的QVBoxLayout实现:
我正在尝试重新组合同一花色的卡片,以实现类似于这样的效果(请注意,存在水平和垂直重叠):
hLayout[card.getSuit()-1]->addWidget(cardWidget, 0, align);
class CardLayout : public QLayout
{
public:
CardLayout(QWidget *parent, int dist): QLayout(parent, 0, dist) {}
CardLayout(QLayout *parent, int dist): QLayout(parent, dist) {}
CardLayout(int dist): QLayout(dist) {}
~CardLayout();
void addItem(QLayoutItem *item);
QSize sizeHint() const;
QSize minimumSize() const;
int count() const;
QLayoutItem *itemAt(int) const;
QLayoutItem *takeAt(int);
void setGeometry(const QRect &rect);
private:
QList<QLayoutItem*> list;
};
void CardLayout::setGeometry(const QRect &r)
{
QLayout::setGeometry(r);
if (list.size() == 0)
return;
int w = r.width() - (list.count() - 1) * spacing();
int h = r.height() - (list.count() - 1) * spacing();
int i = 0;
while (i < list.size()) {
QLayoutItem *o = list.at(i);
QRect geom(r.x() + i * spacing(), r.y() + i * spacing(), w, h);
o->setGeometry(geom);
++i;
}
}