如果在屏幕上看不到QWidget,为什么我只能在运行时向QWidget添加元素?

Mik*_* N. 2 c++ qt

尝试在运行时向QWidget添加按钮时,我遇到了一个奇怪的问题.我有一个带有QTabWidget的窗口,它有2个选项卡.当我按下窗口上的按钮时,它会在第一个选项卡上生成一系列复选框.

问题是,当我打开第一个标签时,按下按钮没有任何反应,但如果我打开第二个标签,按下按钮,然后返回第一个标签,复选框显示正确.这是创建复选框的代码示例:

for(int i = 0; i < x_dim; ++i){
    for(int j = 0; j < y_dim; ++j){
        checkBoxVector.append(new QCheckBox( ui->dim1 ));
        checkBoxVector.last()->setGeometry(i * 20, j * 20, 20, 20);
    }
}
Run Code Online (Sandbox Code Playgroud)

我必须在QTabWidget中启用某种属性才能使其正常工作吗?

Fra*_*eld 5

您可能需要show()新创建的窗口小部件并让布局更新:

checkBoxVector.last()->show();
ui->dim1->updateGeometry();
Run Code Online (Sandbox Code Playgroud)