找回密码
 立即注册
收起左侧

QCalendarWidget 中QTableView鼠标悬停的背景颜色问题

2
回复
4373
查看
[复制链接]

尚未签到

来源: 2021-12-25 20:18:54 显示全部楼层 |阅读模式
1Qter豆

现在问题是,鼠标放到日期上面时没有改变背景颜色样式。
我尝试获取 QCalendarWidget中的QTableView
    QTableView *view =m_calendar->findChild<QTableView*>("qt_calendar_calendarview");想把问题简化为qtableview的鼠标hover样式问题,用到了QStyledItemDelegate代理,在代理中改变样式,还是不行!当然直接设置QTableView QSS样式也试过了,也是不行的。(类似QTableView::item:hover{background:#ff0000;})求正解?

回复

使用道具 举报

尚未签到

2021-12-25 20:22:11 显示全部楼层

QCalendarWidget控件中 鼠标hover日期上时更改背景颜色样式问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

尚未签到

2022-1-19 09:48:51 显示全部楼层
自定义下QCalendarWidget实现paintCell函数
#include "calendar.h"
#include <QDebug>
#include <QPainter>
#include <QCursor>

Calendar::Calendar(QWidget *parent)
    : QCalendarWidget(parent)
{
    setMouseTracking(true);
    startTimer(200);
}

void Calendar::paintCell(QPainter *painter, const QRect &rect, const QDate &date) const
{
    if (!isVisible()) {
        return ;
    }
    if (rect.contains(mapFromGlobal(QCursor::pos())))
    {
        painter->save();
        painter->drawText(rect, Qt::TextSingleLine | Qt::AlignCenter, QString::number(date.day()));
        painter->restore();
    } else {
        QCalendarWidget::paintCell(painter, rect, date);
    }
}

void Calendar::timerEvent(QTimerEvent *event)
{

    if (isVisible()) {
        qDebug() << "isvisible";
        update();

    }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了