Est-il possible dans un QListWidget d'insérer des widget de n'importe quelle nature, par exemple faire une liste de progressbar avec des labels ?
Si oui comment procéder ?
QListWidget* lstWidgets = new QListWidget(); QProgressBar* pBar = new QProgressBar(lstWidgets); ... QListWidgetItem* item = new QListWidgetItem(), item->setData(Qt:: DisplayRole, qVariantFromValue(pBar)); lstWidgets->addItem(item); ...
geogeo (./3) :
Ah oui désolé de n'avoir pas précisé. Sans KDE.
class MyProgressBar : public QProgressBar { public: MyProgressBar(QWidget* parent = 0) : QProgressBar(parent) { this->startTimer(500); } void timerEvent(QTimerEvent *event) { setValue(value() + 1); } }; int main(int argc, char **argv) { QApplication a(argc, argv); QListWidget listView; listView.resize(400, 300); for (int i = 0; i < 5; i++) { QListWidgetItem *item = new QListWidgetItem("", &listView); item->setSizeHint(QSize(200,40)); listView.addItem(item); QWidget* w = new QWidget(); QLabel* l = new QLabel("Label", w); MyProgressBar* p = new MyProgressBar(w); p->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); QPushButton* b = new QPushButton("Cliquez-moi !", w); QObject::connect(b, SIGNAL(clicked()), qApp, SLOT(aboutQt())); QHBoxLayout* hlayout = new QHBoxLayout(); hlayout->setMargin(10); hlayout->addWidget(l); hlayout->addWidget(p); hlayout->addWidget(b); w->setLayout(hlayout); listView.setItemWidget(item, w); } QPushButton* b = new QPushButton("Quitter"); b->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); QObject::connect(b, SIGNAL(clicked()), qApp, SLOT(quit())); QListWidgetItem *item = new QListWidgetItem("", &listView); item->setSizeHint(QSize(200,100)); listView.addItem(item); listView.setItemWidget(item, b); listView.show(); return a.exec(); }