gpt4 book ai didi

Qt布局 child 漂浮

转载 作者:行者123 更新时间:2023-12-04 12:50:06 24 4
gpt4 key购买 nike

我有一个空的水平布局,我动态地填充了三个 child 。这是一个纸牌游戏,因此此布局会动态填充具有图像集的 QLabel 子项。当我点击一张卡片来播放它并将其移动到屏幕中央时,我希望其他卡片的位置保持不变。相反,卡片往往会“漂浮”到右边。我怎样才能迫使他们留在原来的位置?

+-----------------+
| |
| [A] - [B] - [C] |
| |
+-----------------+

我尝试在每张卡片之间放置一个可扩展的水平垫片,但它并没有真正起作用。我还尝试用网格布局替换水平布局,但这迫使我指定我不想指定的卡片的初始坐标。我喜欢这样一个事实,我可以像在 HTML 版本中一样使用 addWidget 附加小部件。

在 HTML 版本中,我在卡片周围使用了一些具有固定大小的包装 div。我怎样才能在 Qt 中做类似的事情?

编辑

关于打出一张牌 (B) 时布局的外观的一些说明。

+-----------------+
| |
| [A] - - [C] |
| |
+-----------------+

正如我提到的,我设法用空的 QWidget 填充布局并将卡片放在它们上面(而不是在它们里面)。我实际上也摆脱了我的水平垫片,因为它们不再需要了。这似乎符合我的预期,尽管我仍然没有完全验证这种方法。

最佳答案

简单的算法步骤来做你想做的事:

  • 用户点击
  • 选择发生点击的标签
  • 如果有图片,将图片从标签中移除
  • 不要从布局中删除标签,并确保布局不会调整标签的大小
  • 将图片添加到棋盘游戏中心的标签中。
  • 当用户点击一个什么都没有的标签时,忽略这次点击。

对于每个玩家,您知道可以在您的布局中显示的最大卡片数量。此外,我不认为卡的大小是可变的。因此,每次为一位玩家创建牌组时,创建空标签,每个标签都有固定大小。

编辑:一些其他提议

  • 使用 QWidget::setFixedSize() 固定标签的大小;
  • 不要隐藏您的标签以删除您的像素图。不要设置空的像素图。相反,设置透明或填充一些中性颜色的像素图...
  • 或者子类化 QLabel,以便您可以指示最小尺寸提示。布局必须并且将会遵守您设置的任何内容。示例:

    class MyQLabel : public QLabel {

    MyQLabel(QSize cardSize, //remaining qlabel args)
    :QLabel(//label args)
    {_cardsize = cardcardSize;}

    //only method to re-implement
    virtual QSize minimumSizeHint () const {return _cardsize;}
    private:
    final QSize _cardsize;
    }

每次需要重新绘制整个应用程序时,都会检查所有小部件属性。我的两分钱是当你打牌时修改了一个大小属性,并且布局适应这种修改。告诉我大小提示技巧是否有效(应该有效)。

关于Qt布局 child 漂浮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12970466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com