资源简介
说起下拉框,想必大家都比较熟悉,在我们注册一些网站的时候,会出现大量的地区数据供我们选择,这个时候出现的就是下拉框列表,再比如字体选择的时候也是使用的下拉框。下拉框到处可见,作为一个图形库,qt也提供了QtComboBox类来供我们使用,但是有些时候简单的下拉列表已经满足不了我们的需求,如58上选择岗位是一个下拉表格,这个时候就需要我们自己定制一下QComboBox。

代码片段和文件信息
#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(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-
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-07-27 13:46 combobox\
文件 8045 2016-07-27 13:38 combobox\combobox.cpp
文件 1730 2016-07-27 13:46 combobox\combobox.h
文件 2734 2014-11-25 22:48 combobox\combobox.ico
文件 106 2016-07-26 17:04 combobox\combobox.qrc
文件 47 2016-07-26 15:09 combobox\combobox.rc
文件 801 2016-07-26 17:01 combobox\combobox.ui
文件 11440 2016-07-26 17:50 combobox\combobox.vcxproj
文件 3137 2016-07-26 17:50 combobox\combobox.vcxproj.filters
文件 3508 2016-06-30 12:53 combobox\FlowLayout.cpp
文件 1142 2016-05-01 20:35 combobox\FlowLayout.h
文件 196 2016-07-26 15:09 combobox\main.cpp
目录 0 2016-07-26 17:04 combobox\Resources\
文件 7317 2016-07-26 17:03 combobox\Resources\icon1.jpg
文件 21 2016-07-26 15:09 combobox\stdafx.cpp
文件 22 2016-07-26 15:09 combobox\stdafx.h
- 上一篇:文本显示控件,支持长英文字符串自动换行
- 下一篇:Qt之QComboBox定制二
评论
共有 条评论