資源簡介
說起下拉框,想必大家都比較熟悉,在我們注冊一些網(wǎng)站的時候,會出現(xiàn)大量的地區(qū)數(shù)據(jù)供我們選擇,這個時候出現(xiàn)的就是下拉框列表,再比如字體選擇的時候也是使用的下拉框。下拉框到處可見,作為一個圖形庫,qt也提供了QtComboBox類來供我們使用,但是有些時候簡單的下拉列表已經(jīng)滿足不了我們的需求,如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“?<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()“?<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定制二
評論
共有 條評論