c++ - Qt中用指针改变布局内容

标签 c++ qt

是否可以使用指针更改布局的内容?

我想做如下的事情。

在标题中:

QWidget* activeView;
QWidget* one;
QWidget* two;
...

在源文件中,我在构造函数中设置了小部件,并将第一个推送到布局:

activeView = one;
ui->activeLayout->addWidget(activeView);

后来我想通过插槽或方法更改 activeView:

activeView = two;

我试过了,但是不行。我什至调用了布局的 update() 方法。

最佳答案

不幸的是,这不会起作用。

你想要的是QStackedWidget。官方文档是here .

如果您不想使用此小部件并想手动使用,您将不得不在代码中自行重构布局。可以用方法包裹起来,不会太难看。

示例:

void clearLayout(QLayout *layout) 
{
    if (layout) {
        while(layout->count() > 0){
            QLayoutItem *item = layout->takeAt(0);
            delete item->widget();
            delete item;
        }
    }
}

void setNewWidgetVisible(QWidget *activeView)
{
   clearLayout(ui->activeLayout);
   ui->activeLayout->addWidget(activeView);
}

关于c++ - Qt中用指针改变布局内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37105811/

相关文章:

c++ - 有没有一种方法可以防止将以前运行的值存储在 txt 文件中(防止覆盖)?

c++ - 构造函数的继承问题

c++ - 使用WIN32 API设置无资源程序图标

c++ - 持续更新 GUI 表单元素,使 Form 不挂起

c++ - 构建成功时 Eclipse (CDT) 中的可疑错误消息

c++ - 在 Qt5.8 中使用 pdf.js

c++ - 尝试设置一个数组以将最后三笔存款存储到银行账户系统中

c++ - std::shared_ptr 初始化:make_shared<Foo>() 与 shared_ptr<T>(new Foo)

qt - 使用Qt的QLabel点击事件?

qt - 如何在 qt 小部件中插入特定符号