ConfigurationListUI::ConfigurationListUI(QStringList &list, ConfigurationListMode mode, QString &description, QWidget *parent) : QWidget(parent), m_list(list) { QLabel *descriptionLabel = new QLabel(description); descriptionLabel->setWordWrap(true); m_listModel = new QStringListModel(list); m_buttonAdd = new QPushButton(tr("Add Item")); m_buttonAdd->setIcon(QIcon::fromTheme("list-add")); m_buttonRemove = new QPushButton(tr("Remove Item")); m_buttonRemove->setIcon(QIcon::fromTheme("list-remove")); m_buttonRemove->setEnabled(false); QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->setAlignment(Qt::AlignRight); buttonLayout->setMargin(0); buttonLayout->setSpacing(10); buttonLayout->addWidget(m_buttonAdd); buttonLayout->addWidget(m_buttonRemove); QWidget *modificationButtons = new QWidget(); modificationButtons->setLayout(buttonLayout); m_listView = new QListView(); m_listView->setModel(m_listModel); QVBoxLayout *listLayout = new QVBoxLayout; listLayout->setMargin(10); listLayout->setSpacing(20); listLayout->addWidget(descriptionLabel); listLayout->addWidget(m_listView); listLayout->addWidget(modificationButtons); this->setLayout(listLayout); connect(m_listView, SIGNAL(clicked(QModelIndex)), this, SLOT(onItemSeleced())); if (mode == DIRECTORY) { connect(m_buttonAdd, SIGNAL(clicked()), this, SLOT(onAddDirectory())); } else { connect(m_buttonAdd, SIGNAL(clicked()), this, SLOT(onAddPattern())); } connect(m_buttonRemove, SIGNAL(clicked()), this, SLOT(onRemove())); }
void PolicyViewClass::contentsMousePressEvent(QMouseEvent* event) { // jump out of add transition mode if (addTransitionMode) { // repaint last arrow QRect rect(arrowFrom_, arrowTo_); rect = rect.normalize(); repaintContents(rect); addTransitionMode = false; } // right button -> popup menu // if (event->button() == RightButton) { picked_x = event->pos().x(); // save this for onAddPattern picked_y = event->pos().y(); // popup menu // QPopupMenu menu; menu.insertItem("Add pattern", this, SLOT(onAddPattern())); menu.exec(QCursor::pos()); } }