您需要实现QLayout的子类。还有就是QT文档中一个详细的例子正好解决你的问题:Layout Management
基本上,你需要定义如下:
的数据结构来存储布局处理的项目。每个项目都是一个QLayoutItem。
addItem(),如何将项目添加到布局。
setGeometry(),如何执行布局。
sizeHint(),布局的首选大小。
itemAt(),如何迭代布局。
takeAt(),如何从布局中删除项目。
在大多数情况下,您还将实现minimumSize()。
下面我抄在该示例代码中最重要的组成部分,为您提供方便:
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