2013-08-05 146 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