Qt QDateEdit下拉日历的样式设计

文章目录

  • QDateEdit样式设计
    • QDateEdit
    • QCalendarWidget
      • 模块功能解析图
      • 样式表代码
    • 一点感慨

QDateEdit样式设计

最近用到了QDateEdit,要对这个控件进行样式的设计,对于我这个新手来说,我属实是有点摸不着头脑,这个控件嵌套了几层。但是还是在谷歌上找到了一些代码,解决了这些个问题,可能百度上有类似的东西,我也是copy的,但是看着百度上搜到的简简单单的没有注释的代码,有点摸不着头脑,所以就想自己来分享一下,也是记录一下遇到的问题。

QDateEdit

这个的样式表设计比较简单

/*正常状态*/
QDateEdit 
{
	background-color: rgba(0,0,255,1);	/*背景颜色*/
	color: rgba(255, 255, 255, 1);		/*字体颜色*/
}

/*选中的状态*/
QDateEdit:focus
{
	border-color: rgba(255,0,0,1);		/*选中状态下,边框颜色*/
	border-style: inset;				/*选中状态下,边框的内容*/
	border-width: 5;					/*选中状态下,边框的宽度*/
}

样式表所对应的效果如下:

Qt QDateEdit下拉日历的样式设计_第1张图片
Qt QDateEdit下拉日历的样式设计_第2张图片

接下来是重头戏,展开的日历窗口

QCalendarWidget

在QDateEdit的下拉日历就是这个控件,这个控件是由其他一些控件组成的,所以比较复杂。我主要是参考了几个博文,在这里首先感谢。

QSS QCalendarWidget,stylesheet-to-calender-popup,qcalendarwidget-how-to-highlight-dates

这几个都帮助我从这个QCalendarWidget的泥潭里面走出来,挺感谢的。

模块功能解析图

下面是我的一些理解
Qt QDateEdit下拉日历的样式设计_第3张图片

样式表代码

/*日历部分的背景颜色*/
#qt_calendar_calendarview {
    background-color: rgba(10, 95, 189, 1);	/*背景颜色*/
    font: 16px;								/*字体*/
}

/*这是日历部分的另外一个写法*/
QCalendarWidget QTableView 
{
    alternate-background-color:rgba(10, 95, 189, 1);  /* day name/week number background */
 	color: rgba(255,255,255,1);
}

/*标题栏的样式*/
QCalendarWidget QWidget#qt_calendar_navigationbar
{ 
  background-color: rgba(4, 51, 114, 1); 
}

/*上一月的箭头的样式*/
QCalendarWidget QToolButton#qt_calendar_prevmonth 
{
    qproperty-icon: url(:/images/images/B.png);
}

/*下一月的箭头的图标*/
QCalendarWidget QToolButton#qt_calendar_nextmonth 
{
    qproperty-icon: url(:/images/images/A.png);
}

/*这里是激活的日期的样式也就是当前这个月*/
QCalendarWidget QAbstractItemView:enabled 
 {
   	font-size:24px;  
   	color: rgb(255, 255, 255); 
/* 这里是你选择一个日期时的样式,包括背景和字体颜色
   selection-background-color: rgb(64, 64, 64); 
   selection-color: rgb(0, 255, 0); */
 }
  
 /*这里是其他月份的样式*/
QCalendarWidget QAbstractItemView:disabled 
{ 
	color: rgb(64, 64, 64); 
}

这个可以修改周末的颜色

	QTextCharFormat format = calendarWidget->weekdayTextFormat(Qt::Saturday);
	format.setForeground(QBrush(Qt::white, Qt::SolidPattern));
	calendarWidget->setWeekdayTextFormat(Qt::Saturday, format);

下图是具体设计出来后的样式
Qt QDateEdit下拉日历的样式设计_第4张图片

一点感慨

看官老爷如果仅仅想要知道怎么设置样式,那看到这就可以退出这篇文章了,因为下面,是我自己的一些碎碎叨叨。

这些话,写在2023-6-8,本来寻思着把之前的一些博客写的不好的,更新更新,写的不对的,纠正过来,不误人子弟。但是在改的过程中,看到之前刚开始接触Qt时,写的一些博客,感觉自己的博客内容写的很稚嫩,有些语句都很不通顺。特别是对一些Qt里的东西,描述的很浅显,都不准确。现在回头看,发现,

”轻舟已过万重山“

工作了快三年了,回首往昔,都是靠自己硬学学过来的,写这些也没有太多含义。就是仅仅想对和我当初刚毕业,刚接触Qt的同学说一句:

一切的一切,只要坚持。最终,都会变好的

你可能感兴趣的:(日常积累,Qt,qt,css,ui)