#include "MessageListWidget.h" #include #include #include #include #include #include MessageListWidget::MessageListWidget() : messageList( new QListWidget() ), addButton( new QPushButton ("+" ) ), removeButton( new QPushButton( "-" ) ), dialog( new QInputDialog() ) { QVBoxLayout *vLayout = new QVBoxLayout(); QHBoxLayout *hLayout = new QHBoxLayout(); // Es kann nur ein Element der Liste selektiert werden. messageList->setSelectionMode( QAbstractItemView::SingleSelection ); // Der Dialog bekommt text als Eingabe und ist modal dialog->setInputMode( QInputDialog::TextInput ); dialog->setModal( true ); dialog->setWindowTitle( "Neuer Eintrag" ); // Verbindungen aufbauen connect( addButton, &QPushButton::clicked, this, &MessageListWidget::showInputDialog ); connect( removeButton, &QPushButton::clicked, this, &MessageListWidget::removeSelectedMessage ); connect( dialog, &QInputDialog::textValueSelected, this, &MessageListWidget::addMessage ); // Widgets in Layout einfügen hLayout->addStretch(); hLayout->addWidget( addButton ); hLayout->addWidget( removeButton ); vLayout->addWidget( messageList ); vLayout->addLayout( hLayout ); setWindowTitle( "Todo" ); setLayout( vLayout ); resize( 400, 400 ); } void MessageListWidget::showInputDialog() { // Dialog zurücksetzen und anzeigen dialog->setTextValue( "" ); dialog->open(); } void MessageListWidget::addMessage( const QString& text ) { // Text in die Liste einfügen, wenn er nicht nur aus Whitespaces besteht if( text.trimmed().size() > 0 ) messageList->addItem( text ); } void MessageListWidget::removeSelectedMessage() { // Ausgewähltes Objekt aus der Liste löschen (es kann immer nur 1 Objekt gelöscht werden) QList items = messageList->selectedItems(); delete items.first(); }