一、背景
工作需要,我做了一个QDateTimeEdit 和QCalendarWidget用于通过日历来选取时间,参考:自定义日历 结果如下图,其弹出按钮位置我想添加一个日历小图标,但是QDateTimeEdit 中似乎并没有单独为右侧按钮设计样式的功能(或许是我没找到,有知道方法者请告知,感谢Thanks♪(・ω・)ノ)
二、成功实现
于是我做了一个pushbutton,在pushbutton上添加日历图片,将pushbutton移动到QDateTimeEdit 的按钮的位置,再使pushbutton置于上层,最后使点击pushbutton的信号传递到QDateTimeEdit 的按钮。代码如下:
dateEdit = new QDateTimeEdit(QDate::currentDate(), this);
dateEdit->setGeometry(60,52,151,40);
// dateEdit->setFocusPolicy(Qt::NoFocus); //设置文本框不能编辑
dateEdit->setToolTip("选择日期");
//添加图片和设置背景色
ui->pushButton->setStyleSheet("image: url(:/rec/calendar_icon.png);background-color: rgb(255, 255, 255);");
ui->pushButton->raise(); //置于上层
ui->pushButton->setAttribute(Qt::WA_TransparentForMouseEvents);//点击信号可穿透pushbutton到达dateEdit
如此,结果就如下图:
三、走的弯路
1.使用QLabel添加图片
我起初想法是将图片放到QLabel中,在向上面的方法一样将label放到对应位置,但是label总是被QDateTimeEdit 盖住无法显示,label->setParent(dateEdit);
不起作用,label也无法使用raise
()函数,所以此法不行。