用c语言调整窗口大小,c – 使用QToolBox,哪个设置只有页面的内容大小?

不幸的是,你不能直接这样做,因为它将跨越标题小部件不占用的所有可用空间.如果您知道页面的确切高度,可以通过在QToolBox上设置

fixed height来模拟您想要的内容.但你不想在实践中这样做.

如果您想要您所要求的行为,那么您需要编写自己的自定义控件.它不一定很难.使用QVBoxLayout并填充自定义类的项目,让我们称之为ToolItem,它是一个带有标题的QWidget(可能是一个显示/隐藏的按钮)和另一个用于显示可见或不可见内容的QWidget.

以下非常简单的示例将在单击ToolItem时切换其可见性.只有在可见时它才会占据任何空间.

class ToolItem : public QWidget {

public:

ToolItem(const QString &title,QWidget *item) : item(item) {

QVBoxLayout *layout = new QVBoxLayout;

layout->setContentsMargins(0,0);

layout->addWidget(new QLabel(title));

layout->addWidget(item);

setLayout(layout);

item->setVisible(false);

}

protected:

void mousePressEvent(QMouseEvent *event) {

item->setVisible(!item->isVisible());

}

private:

QWidget *item;

};

class ToolBox : public QWidget {

public:

ToolBox() : layout(new QVBoxLayout) {

setLayout(layout);

}

void addItem(ToolItem *item) {

// Remove last spacer item if present.

int count = layout->count();

if (count > 1) {

layout->removeItem(layout->itemAt(count - 1));

}

// Add item and make sure it stretches the remaining space.

layout->addWidget(item);

layout->addStretch();

}

private:

QVBoxLayout *layout;

};

简单的用法:

QWidget *window = new QWidget;

window->setWindowTitle("QToolBox Example");

QListWidget *list = new QListWidget;

list->addItem("One");

list->addItem("Two");

list->addItem("Three");

ToolBox *toolBox = new ToolBox;

toolBox->addItem(new ToolItem("Title 1",new QLabel("Some text here")));

toolBox->addItem(new ToolItem("Title 2",list));

toolBox->addItem(new ToolItem("Title 3",new QLabel("Lorem Ipsum..")));

QVBoxLayout *layout = new QVBoxLayout;

layout->addWidget(toolBox);

window->setLayout(layout);

window->resize(500,500);

window->show();

如果需要,您现在可以将其调整为QToolBox.

请不要犹豫,提出后续问题.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值