Example #1
0
void
TagColorEditor::createGUI()
{
  QItemEditorFactory *colorFactory = new QItemEditorFactory;
  QItemEditorCreatorBase *colorCreator =
    new QStandardItemEditorCreator<ColorEditor>();
  colorFactory->registerEditor(QVariant::Color, colorCreator);
  
  QItemEditorFactory *opFactory = new QItemEditorFactory;
  QItemEditorCreatorBase *opacityCreator =
    new QStandardItemEditorCreator<OpacityEditor>();
  opFactory->registerEditor(QVariant::Double, opacityCreator);


  table = new QTableWidget(254, 2);
  table->setHorizontalHeaderLabels(QStringList() << tr("Color")
				                 << tr("Opacity"));
  table->resize(150, 200);
  
  QItemDelegate *colorDelegate = new QItemDelegate();
  colorDelegate->setItemEditorFactory(colorFactory);
  
  QItemDelegate *opDelegate = new QItemDelegate();
  opDelegate->setItemEditorFactory(opFactory);
  
  table->setItemDelegateForColumn(0, colorDelegate);
  table->setItemDelegateForColumn(1, opDelegate);
  
  table->setEditTriggers(QAbstractItemView::DoubleClicked);
  
  setColors();

  table->setGridStyle(Qt::NoPen);
  for (int i=0; i < table->rowCount(); i++)
    table->setRowHeight(i, 20);

  table->setColumnWidth(0, 100);
  table->setColumnWidth(1, 50);
    
  QVBoxLayout *layout = new QVBoxLayout;
  layout->addWidget(table);
  
  setLayout(layout);
  
  setWindowTitle(tr("Tag Color Editor"));
  
  connect(table, SIGNAL(itemChanged(QTableWidgetItem*)),
	  this, SLOT(itemChanged(QTableWidgetItem*)));

  connect(table, SIGNAL(cellClicked(int, int)),
	  this, SLOT(tagClicked(int, int)));
}
LocaleWidget::LocaleWidget(QWidget *parent)
    : QWidget(parent)
{
    m_model = new LocaleModel(this);
    m_view = new QTableView(this);

    QItemDelegate *delegate = qobject_cast<QItemDelegate*>(m_view->itemDelegate());
    Q_ASSERT(delegate != 0);
    static EditorFactory editor_factory;
    delegate->setItemEditorFactory(&editor_factory);

    m_view->setModel(m_model);

    QVBoxLayout *layout = new QVBoxLayout(this);
    layout->setMargin(0);
    layout->addWidget(m_view);
}