Hi Something like this could work, using a place holder for a label and a button will get you this http://postimg.org/image/9lhnsha15/ you still need to hook up button&label for it to do something :) #include "mainwindow.h" #include <QApplication> #include <QCheckBox> #include <QRadioButton> #include <QPushButton> #include <QVBoxLayout> #include <QLabel> #include <QFile> #include <QMessageBox> #include <QTextStream> void CreateItem ( QListWidget * TheList , QString& TheText ) { QListWidgetItem * item = new QListWidgetItem ( "" ); TheList->addItem ( item ); // add a place hodler for label and button QWidget * w = new QWidget(); w->setLayout ( new QHBoxLayout() ); QPushButton *but = new QPushButton ( "Do it" ); QLabel *lab = new QLabel ( TheText ); // make row a bit bigger item->setSizeHint ( QSize ( item->sizeHint().width(), 30 ) ); // add the label and button to the layout w->layout()->addWidget ( lab ); w->layout()->addWidget ( but ); // reduce the space around it abit w->layout()->setContentsMargins ( 1, 1, 1, 1 ); // set this combined widget for the row TheList->setItemWidget ( item, w ); } int main ( int argc, char ** argv ) { QApplication app ( argc, argv ); QListWidget * list = new QListWidget(); list->setGeometry(50,50,400,200); QFile file ( "e:/mylist.txt" ); if ( !file.open ( QIODevice::ReadOnly ) ) { QMessageBox::information ( 0, "error", file.errorString() ); } QTextStream in ( &file ); while ( !in.atEnd() ) { QString line = in.readLine(); CreateItem ( list, line ); } file.close(); list->show(); return app.exec(); };