代码拉取完成,页面将自动刷新
#include "comboboxdelegatebool.h"
#include <QDebug>
QCheckBox* chkBoxBool;
ComboBoxDelegateBool::ComboBoxDelegateBool(QObject* parent)
{
Q_UNUSED(parent);
}
QWidget* ComboBoxDelegateBool::createEditor(QWidget* parent,
const QStyleOptionViewItem&,
const QModelIndex& index) const
{
Q_UNUSED(index);
QStringList list;
list << "false"
<< "true";
QCheckBox* editor = new QCheckBox(parent);
return editor;
}
void ComboBoxDelegateBool::setEditorData(QWidget* editor,
const QModelIndex& index) const
{
QString value = index.data().toString();
chkBoxBool = static_cast<QCheckBox*>(editor);
connect(chkBoxBool, &QCheckBox::clicked, this, &ComboBoxDelegateBool::on_chkBox_clicked);
chkBoxBool->setGeometry(editor->x() + 60, editor->y(), 100, editor->height());
if (value == "true") {
chkBoxBool->setChecked(true);
} else {
chkBoxBool->setChecked(false);
}
QPalette p = chkBoxBool->palette();
p.setColor(QPalette::Active, QPalette::WindowText, Qt::white);
p.setColor(QPalette::Inactive, QPalette::WindowText, Qt::white);
chkBoxBool->setPalette(p);
}
void ComboBoxDelegateBool::setModelData(QWidget* editor,
QAbstractItemModel* model, const QModelIndex& index) const
{
Q_UNUSED(model);
chkBoxBool->setGeometry(editor->x() + 60, editor->y(), 100, editor->height());
QString val;
if (chkBoxBool->isChecked()) {
val = "true";
} else {
val = "false";
}
emit ComboBoxDelegateBool::dataChanged(QModelIndex(index), val);
}
void ComboBoxDelegateBool::updateEditorGeometry(QWidget* editor,
const QStyleOptionViewItem& option, const QModelIndex& index) const
{
Q_UNUSED(index);
editor->setGeometry(option.rect);
}
void ComboBoxDelegateBool::on_chkBox_clicked()
{
QPalette p = chkBoxBool->palette();
p.setColor(QPalette::Active, QPalette::WindowText, Qt::white);
p.setColor(QPalette::Inactive, QPalette::WindowText, Qt::white);
chkBoxBool->setPalette(p);
QString val;
if (chkBoxBool->isChecked()) {
val = "true";
} else {
val = "false";
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。