2013-08-05 141 views
0

我有一个动态创建的图像扩展列表,我想显示其复选框。 我有一个QStringList包含.png,.jpg,.bmp。这个列表可以被用户修改,所以我需要在UI上为每种可能性生成一个复选框。动态生成复选框

QStringList filters; 
filters << "*.jpg" << "*.png" << "*.jpeg"; 

我在想一个foreach或for循环来实现这一点。

​​

这会在用户界面上放置3个复选框,但它们都在另一个之上。 我怎样才能将它们分隔开来?还有,我怎样才能在状态变化时从检查到未检查?

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

谢谢。

回答

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() 

阅读上QVBoxLayout在http://qt-project.org/doc/qt-5.0/qtwidgets/qvboxlayout.html