我有一个动态创建的图像扩展列表,我想显示复选框。 我有一个包含.png,.jpg,.bmp的QStringList。用户可以更改此列表,因此我需要在UI上为每种可能性生成一个复选框。
QStringList filters;
filters << "*.jpg" << "*.png" << "*.jpeg";
我正在考虑使用foreach或for循环来实现这一目标。
foreach(QString filt, filters){
QCheckBox *checkbox = new QCheckBox(filt, this);
}
这会在UI上放置3个复选框,但它们都是彼此重叠的。 如何将它们分隔开来,以及如何处理从检查到未经检查的状态变化?
当它从字符串列表中生成复选框时,绝对不知道如何执行此操作。
感谢。
答案 0 :(得分:3)
复选框堆叠在一起,因为您没有将它们添加到窗口小部件的布局中。这是一个将每个复选框放入垂直布局的示例。
QWidget *w = new QWidget;
QVBoxLayout *vbox = new QVBoxLayout;
foreach(QString filt, filters){
QCheckBox *checkbox = new QCheckBox(filt, this);
checkbox->setChecked(true);
vbox->addWidget(checkbox);
}
w->setLayout(vbox);
w->show()
在http://qt-project.org/doc/qt-5.0/qtwidgets/qvboxlayout.html
上阅读QVBoxLayout