【发布时间】:2019-07-15 13:42:42
【问题描述】:
使用 Qt5,我正在尝试开发一个应用程序,其小部件按列排列。小部件由以下代码创建:
QWidget *area = new QWidget(centralWidget);
QHBoxLayout *layout = new QHBoxLayout(area);
for (int i=0; i<n; i++) {
columns.push_back(new QWidget(area));
layout->addWidget(columns[i]);
layouts2.push_back(QVBoxLayout());
labels.push_back(new QVector<QLabel *>);
for (j=0; j<m; j++) {
labels[i].push_back(new QLabel(columns[i]));
layouts2[i]->addWidget(labels[i][j]);
}
}
稍后,可以从列中添加或删除标签。删除标签的代码是:
QLabel *label = labels[i][j];
layouts2[i]->removeWidget(label);
delete label;
labels[i].pop_back();
最终,一列的所有标签都会被删除。我曾希望,即使没有子组件,列小部件也能用作占位符,并像以前一样保留显示,在空列应该有的地方留一个空白。相反,该列从显示中消失,仅显示 n-1 列。出了什么问题,我该如何解决?
【问题讨论】: