123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #include "EXDataViewDelegate.h"
- #include <QHBoxLayout>
- #include <QLabel>
- #include <QPushButton>
- #include <QButtonGroup>
- #include <QDebug>
- #include <QComboBox>
- SchemeBar::SchemeBar(const QString &lLabel, const QString &rLabel, const QStringList &vlist, QWidget *parent)
- : QDialog(parent), leftLabel(lLabel), rightLabel(rLabel), barValueList(vlist)
- {
- setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint);
- QHBoxLayout *hlay = new QHBoxLayout;
- QLabel *l = new QLabel(leftLabel.trimmed());
- QLabel *r = new QLabel(rightLabel.trimmed());
- QHBoxLayout *centerLay = new QHBoxLayout;
- QButtonGroup *btnGroup = new QButtonGroup(this);
- for (QString &v : barValueList) {
- QPushButton *btn = new QPushButton(v);
- btn->setMaximumWidth(30);
- centerLay->addWidget(btn);
- btnGroup->addButton(btn);
- if (v.startsWith("1/")) {
- btn->setText(v.split("/")[1]);
- } else {
- btn->setText(v);
- }
- btn->setProperty("number", v);
- }
- connect(btnGroup, static_cast<void (QButtonGroup::*)(QAbstractButton *)>(&QButtonGroup::buttonClicked), this,
- &SchemeBar::barClicked);
- hlay->addWidget(l);
- hlay->addLayout(centerLay);
- hlay->addWidget(r);
- setLayout(hlay);
- }
- void SchemeBar::barClicked(QAbstractButton *btn)
- {
- emit setValue(btn->property("number").toString());
- this->close();
- }
- EXDataTableComboDelegate::EXDataTableComboDelegate(QObject *parent) : QStyledItemDelegate(parent) { }
- QWidget *EXDataTableComboDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem & /* option */,
- const QModelIndex & /* index */) const
- {
- QComboBox *w = new QComboBox(parent);
- w->addItems({ "9", "5", "4", "3", "1" });
- return w;
- }
- void EXDataTableComboDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
- {
- QString value = index.model()->data(index, Qt::EditRole).toString();
- QComboBox *comboBox = static_cast<QComboBox *>(editor);
- comboBox->setCurrentText(value);
- }
- void EXDataTableComboDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
- {
- QComboBox *spinBox = static_cast<QComboBox *>(editor);
- QString value = spinBox->currentText();
- model->setData(index, value, Qt::EditRole);
- }
- void EXDataTableComboDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,
- const QModelIndex & /*index*/) const
- {
- editor->setGeometry(option.rect);
- }
|