我有一个动态创建的图像扩展列表,我想为其显示复选框。 我有一个包含 .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 个复选框,但它们都在彼此之上。 我怎样才能将它们隔开,而且,我怎样才能即时处理从选中状态到未选中状态的变化?
当它从字符串列表生成复选框时,完全不知道如何做到这一点。
谢谢。
最佳答案
复选框相互堆叠,因为您没有将它们添加到小部件的布局中。下面是一个将每个复选框放入垂直布局的示例。
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
关于c++ - 即时生成复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18068897/