1

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

当它从字符串列表生成复选框时,完全不知道如何做到这一点。

谢谢。

4

1 回答 1

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

于 2013-08-05T23:43:59.167 回答