即时生成复选框

时间:2013-08-05 22:31:41

标签: c++ qt

我有一个动态创建的图像扩展列表,我想显示复选框。 我有一个包含.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个复选框,但它们都是彼此重叠的。 如何将它们分隔开来,以及如何处理从检查到未经检查的状态变化?

当它从字符串列表中生成复选框时,绝对不知道如何执行此操作。

感谢。

1 个答案:

答案 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