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); }