示例#1
0
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());
  }
}