问题描述
跟着C++开发指南视频学习,但是发现无论是直接使用ui设计,还是纯代码都无法实现变更字体颜色的功能。图中显示,点击颜色控件后,文本框的文字加粗、下划线、斜体等才能设置,但是无法变更颜色。
此文提醒qt style sheet影响了文本框的颜色变化。但是本文是使用UI进行设计,我用代码进行UI设计,所以无法直接按照里面介绍的方法,删除文本编辑框txtEdit的样式表的字体颜色。同时发现,QT ducumentation官网提供了许多内容的检索。
在检索 **qt6 setStyleSheet(color:red)时,发现 txtEdit->setStyleSheet(“color:blue”);**这个表达是存在的,于是直接采用如下表达。但是问题在于,只有第一个if表达下的函数是有效的,其它if下的语句无效。换言之,样式表可以作用于文本框,但是使用限制比较多。
void Dialog::do_setFontColor()
{QPalette plet=txtEdit->palette();if(radioBlack->isChecked())txtEdit->setStyleSheet("color:blue");//plet.setColor(QPalette::Text,Qt::black);if(radioRed->isChecked())//txtEdit->setStyleSheet("color:blue");txtEdit->setStyleSheet("color:red");//plet.setColor(QPalette::Text,Qt::red);if(radioBlue->isChecked())//txtEdit->setStyleSheet("color:blue");// plet.setColor(QPalette::Text,Qt::blue);//txtEdit->setStyleSheet("color:red");// txtEdit->setStyleSheet("color:red");txtEdit->setPalette(plet);}
经过测试,这种表达是无效的。