#include "stdafx.h"
#include "combobox.h"
CActionContentWidget::CActionContentWidget(const QString & text, QWidget * parent /*= nullptr*/) :QWidget(parent)
{
InitializeUI();
SetContentText(text);
}
CActionContentWidget::~CActionContentWidget()
{
}
void CActionContentWidget::SetContentText(const QString & text)
{
if (m_ActText)
{
m_ActText->setText(text);
}
}
void CActionContentWidget::SetItemIcon(const QString & icon, const QString & hover)
{
setStyleSheet(QString("QWidget#m_ContentWidget{background:#f0eeee;}"
"QWidget#m_ContentWidget[MouseHover=true]{background:#f2868b;height:30px;}"//f2868b
"QLabel{color:#777777;font-family:%1;font-size:12px;padding-left:8px;background:#f6f6f6;}"
"QLabel[MouseHover=true]{color:#ffffff;font-family:%1;font-size:12px;padding-left:8px;background:transparent;}"//f2868b
"QPushButton{border-image:url(%2); margin:2 2 2 2;}"
"QPushButton[MouseHover=true]{border-image:url(%3); margin:3 3 3 3;}"
).arg(QStringLiteral("微软雅黑")).arg(icon).arg(hover));
}
void CActionContentWidget::SetBackgroundRole(bool hover)
{
m_ContentWidget->setProperty("MouseHover", hover);
m_ActIcon->setProperty("MouseHover", hover);
m_ActText->setProperty("MouseHover", hover);
QString styleStr = styleSheet();
setStyleSheet("");
setStyleSheet(styleStr);
}
void CActionContentWidget::enterEvent(QEvent * event)
{
qDebug() << "CActionContentWidget::enterEvent";
QWidget::enterEvent(event);
}
void CActionContentWidget::leaveEvent(QEvent * event)
{
qDebug() << "CActionContentWidget::leaveEvent" << event->type();
QWidget::leaveEvent(event);
}
bool CActionContentWidget::eventFilter(QObject * obj, QEvent * event)
{
if (obj == m_ActIcon || obj == m_ActText)
{
if (QMouseEvent * mouseEvent = static_cast<QMouseEvent *>(event))
{
if (QEvent::MouseMove == event->type())
{
qDebug() << "event->type()" << event->type();
}
}
}
return QWidget::eventFilter(obj, event);
}
void CActionContentWidget::mousePressEvent(QMouseEvent * event)
{
if (event->button() == Qt::LeftButton)
{
m_Mouse_press = true;
}
}
void CActionContentWidget::mouseReleaseEvent(QMouseEvent * event)
{
if (m_Mouse_press)
{
emit showText(m_ActText->text());
m_Mouse_press = false;
}
}
void CActionContentWidget::InitializeUI()
{
m_ContentWidget = new QWidget();
m_ActIcon = new QPushButton();
m_ActText = new QLabel();
QHBoxLayout * mainLayout = new QHBoxLayout();
connect(m_ActIcon, &QPushButton::clicked, this, [this]{
emit showText(m_ActText->text());
});
m_ActIcon->installEventFilter(this);
m_ActText->installEventFilter(this);
mainLayout->setMargin(0);
mainLayout->setSpacing(0);
m_ActIcon->setFixedSize(45, 45);
m_ContentWidget->setObjectName(QStringLiteral("m_ContentWidget"));
m_ActIcon->setObjectName(QStringLiteral("ActionIcon"));
m_ActText->setObjectName(QStringLiteral("m_ActText"));
mainLayout->addWidget(m_ActIcon);
mainLayout->addWidget(m_ActText);
m_ContentWidget->setLayout(mainLayout);
QVBoxLayout * fwLayout = new QVBoxLayout();
fwLayout->setMargin(0);
fwLayout->setSpacing(0);
fwLayout->addWidget(m_ContentWidget);
setLayout(fwLayout);
}
void CheckBox::checkStateSet()
{
QCheckBox::checkStateSet();
}
bool CheckBox::hitButton(const QPoint & pos) const
{
bool r = QCheckBox::hitButton(pos);
qDebug() << "r" << r;
return true;
}
void CheckBox::nextCheckState()
{
QCheckBox::nextCheckState();
}
combobox::combobox(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ConstructList();
// ConstructTable();
}
combobox::~combobox()
{
}
bool combobox::eventFilter(QObject * watched, QEvent * event)
{
if (watched->inherits("QWidget") && event->type() == QEvent::Paint)
{
if (CActionContentWidget * actionItem = dynamic_cast<CActionContentWidget *>(watched))
{
if (actionItem->rect().contains(actionItem->mapFromGlobal(QCursor::pos())))
{
actionItem->SetBackgroundRole(true);
}
else
{
actionItem->SetBackgroundRole(false);
}
}
}
return QWidget::eventFilter(watched, event);
}
void combobox::ConstructList()
{
QListWidget * listWidget = new QListWidget;
listWidget->setViewMode(QListView::ListMode);
for (int i = 0; i < 5; i++)
{
CActionContentWidget * itemWidget = new CActionContentWidget("fawefawe");
connect(itemWidget, &CActionContentWidget::showText, this, [this, listWidget](const QString & text){
ui.comboBox->hidePopup();
if (ui.comboBox->isEditable())
{
ui.comboBox->setCurrentText(text);
}
else
{
for (int c = 0; c < listWidget->count(); ++c)
{
CActionContentWidget * itemWidget = dynamic_cast<CActionContentWidget *>(listWidget->itemWidget(listWidget->item(c)));
if (itemWidget == sender())
{
ui.comboBox->setCurrentIndex(c);
}
}
}
});
itemWidget->SetItemIcon(":/combobox/Resources/icon1.jpg", ":/combobox/Resources/icon1.jpg");
itemWidget->setFixedHeight(45);
itemWidget->setFixedWidth(150);
QListWidgetItem * item = new QListWidgetItem(listWidget);
item->setText(QStringLiteral("%1").arg(i));
// item->setCheckState(Qt::Checked);
listWidget->setItemWidget(item, itemWidget);
listWidget->addItem(item);
itemWidget->installEventFilter(this);
}
ui.comboBox->setModel(listWidget->model());
ui.comboBox->setView(listWidget);
ui.comboBox->setEditable(true);//是否支持下拉框可编辑
ui.comboBox->setMaxVisibleItems(3);
setStyleSheet("QComboBox{border:1px solid gray;}"
"QComboBox QAbstractItemView::item{height:45px;}" //下拉选项高度
"QComboBox::down-arrow{image:url(:/combobox/Resources/icon1.jpg);}" //下拉箭头
"QComboBox::drop-down{border:0px;}"); //下拉按钮
}
void combobox::ConstructTable()
{
setStyleSheet("QComboBox QAbstractItemView {selection-background-color: transparent;}");
QTableWidget * tableWidget = new QTableWidget(3, 3);
tableWidget->verticalHeader()->setVisible(false);
tableWidget->horizontalHeader()->setVisible(false);
tableWidget->setShowGrid(false);
for (int i = 0; i < 3; ++i)
{
tableWidget->setColumnWidth(i, 49);
tableWidget->setRowHeight(i, 50);
for (int j = 0; j < 3; ++j)
{
/* CActionContentWidget *itemWidget = new CActionContentWidget("fawefawe");
itemWidget->SetItemIcon(":/combobox/Resources/icon1.jpg", ":/combobox/Resources/icon1.jpg");
itemWidget->setFixedHeight(50);
itemWidget->setFixedWidth(50);*/
CheckBox * itemWidget = new CheckBox;
itemWidget->setFixedSize(50, 50);
itemWidget->setStyleSheet(QString("QCheckBox {background-color:lightgray;}"
"QCheckBox:checked{background-color:white;}"));
connect(itemWidget, &QCheckBox::clicked, this, [this]{
QObject * sender = this->sender();
if (QCheckBox * item = dynamic_cast<QCheckBox *>(sender))
{
QString text = ui.comboBox->currentText();
if (text.isEmpty() == false)
{
if (item->isChecked())
{
if (text.split("|").indexOf(item->text()) == -1)
{
text.append("|" + item->text());
}
}
else
{
text.remove("|" + item->text());
text.remove(item->text());
if (text.size() != 0 && text.at(0) == '|')
{
text.remove(0, 1);
}
}
}
else
{
if (item->isChecked())
{
text.append(item->text());
}
}
ui.comboBox->setCurrentText(text);
}
});
itemWidget->setText(QStringLiteral("好%1").arg(i));
itemWidget->setCheckable(true);
// tableWidget->setItem(i, j, new QTableWidgetItem(QStringLiteral("热分%1").arg(i)));
tableWidget->setCellWidget(i, j, itemWidget);
itemWidget->installEventFilter(this);
}
}
ui.comboBox->setModel(tableWidget->model());
ui.comboBox->setView(tableWidge
一窝蜂117
- 粉丝: 604
- 资源: 44
最新资源
- 一拖二热站自控系统程序,2个循环泵,2个补水泵,循环泵与补水泵采用一用一备,按设置时间自动切,使用西门子200smart sr30 PLC+昆仑通泰触摸屏,程序有完整注释和电路图,已在工程上使用,可直
- 常用的java基础类包括MD5、错误处理、映射、服务等等
- 燃料电池汽车Cruise整车仿真模型(燃料电池电电混动整车仿真模型) 1.基于Cruise与MATLAB Simulink联合仿真完成整个模型搭建,策略为多点恒功率(多点功率跟随)式控制策略,策略模
- 基于cruise的混动仿真,P2并联混动仿真模型可实现并联混动汽车动力性经济性仿真 1.模型通过cruise simulink联合仿真,策略通过MATLAB Simulink搭建逻辑门限控制策略 模
- 基于DP动态规划的混合动力汽车,P2构型 1.车辆数据来源advisor 2.电池SOC为电量维持型策略 3.全程序包含逆向迭代和正向寻优过程 4.DP可为后续mpc提供参考,也可将数据提取作为
- 机器学习(预测模型):顶级科学家和研究人员数据集
- 无刷驱动foc无刷电机驱动方式学习 可用于驱动无刷电机,永磁同步电机 智能车平衡单车组无刷动量轮驱动学习 包含:FOC框架、坐标变、SVPWM、电流环、 速度环、有感FOC、无感FOC等等 提供
- 联想开天N70z 笔记本win10(无线网卡、主板、显卡、指纹驱动)
- Python程序,这是一个卡尔曼滤波器 Python程序,卡尔曼滤波器,根据测量值和估计值获得最优估计值,数据程序分开,便于使用,注释详细,助于理解
- 机器学习(AI模型):对ChatGPT相关的推文进行情感分析数据集
- 实际项目中三菱fx5u编写的中型程序,用了st fbd ld 混合编程,程序内容完整,控制十来个轴 ,结构清晰 ,用到了结构体,全局变量 ,适合进阶学习
- 基于滑模控制(slide mode control)的boost升压电路模型,对比传统PI控制 滑模控制鲁棒性更强,抗扰动性能更好,同时也具备较好的动态响应 跟踪效果和对比效果如展示图所示 运行
- 台达PLC,台达AS228T系列PLC 马达点胶机项目 该项目由1台威纶通HMI以太网连接1台台达AS系列中型PLC构成,控制3个轴,PLC用ISPSoft软件编程 X,Y,Z,三轴模组式点胶结构,X
- 千年新章完整源代码,本人修改可编译
- sfsdffffsdfsdf
- 偏移容忍度谐振补偿网络方设计方法研究 simulink仿真实现 磁耦合谐振式无线电能传输中,相控电容式补偿方法研究 simulink仿真实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页