#include "ccomboBox.h"
#include <QLineEdit>
#include <QListView>
#include <QStandardItemModel>
#include <QMouseEvent>
CComboBox ::CComboBox(QWidget *parent):QComboBox(parent)
{
reset_align = true;
flag_align = Qt::AlignCenter;
this->setEditable(true);
QLineEdit *l = this->lineEdit();
l->setReadOnly(true);
l->setAlignment(flag_align);// 设置居中
l->setAttribute(Qt::WA_TransparentForMouseEvents, true);// 屏蔽lineEdit鼠标事件
// 下拉框样式生效需要QComboBox重新设置下拉框控件类
this->setView(new QListView());
}
CComboBox::~CComboBox(){
}
void CComboBox::mouseReleaseEvent(QMouseEvent *e)
{
if(e->button() == Qt::LeftButton){
if(reset_align){
reset_align = false;
setAlignment(flag_align);
}
QComboBox::showPopup();// 按下弹出下拉框
}
}
void CComboBox::setAlignment(Qt::Alignment flag)
{
//下拉列表居中
QStandardItemModel* model = static_cast<QStandardItemModel*>(this->view()->model());
if(model){
for(int i = 0; i < model->rowCount(); i ++){
if(model->item(i))
model->item(i)->setTextAlignment(flag);
}
}
}