首页 QT中设置字体和更改字体颜色

QT中设置字体和更改字体颜色

举报
开通vip

QT中设置字体和更改字体颜色QT中设置字体和更改字体颜色 更改部分: setTextColor(QColor("red")) 更改全部: 对一个文本框lineEdit设置字体,首先我建了一个按钮setFontButton用来设置 并定义了它的相应函数setFont,将setFontButton添加到布局中,并通过connect()设置与setFont()关联, 然后定义setFont如下 void FindDialog::setFont() { bool ok; constQFont& font = QFontDialog::getFont...

QT中设置字体和更改字体颜色
QT中设置字体和更改字体颜色 更改部分: setTextColor(QColor("red")) 更改全部: 对一个文本框lineEdit设置字体,首先我建了一个按钮setFontButton用来设置 并定义了它的相应函数setFont,将setFontButton添加到布局中,并通过connect()设置与setFont()关联, 然后定义setFont如下 void FindDialog::setFont() { bool ok; constQFont& font = QFontDialog::getFont(&ok, lineEdit->font(), this, tr("fontDialog")); if(ok) { lineEdit->setFont(font); } } 这样就可以设置字体了 改变字体或按钮的颜色: 先加入色板类#include 比如要设置lineEdit里字体的颜色为红色 QPalette pal =lineEdit->QPalette(); pal->setColor(QPalette::Text,QColor(255,0,0); lintEdit->setPalette(pal); 这样文本框中的字体就变成红色的了。 如果要通过调用色板来选择字体颜色,可以加上下列代码,其中的按钮创建,连接等省略 void FindDialog::setFont { QPalette palette = lineEdit->palette(); constQColor& color = QColorDialog::getColor(palette.color(QPalette::Base),this); if(color.isValid()) { palette.setColor(QPalette::Text,color); lineEdit->setPalette(palette); } } Qt中控件的字体颜色设置 一般的属于QWidget子类的一些控件,可以直接使用样式表,例如label->setStyleSheet("color:white");其他的一些不属于QWidget子类的控件,可以考虑设置其前景色,例如各种ViewtreeWidgetItem->setForeground(0,QBrush(QColor(Qt::white)));   QT中设置字体和更改字体颜色 2010-08-12 14:54:08| 分类:linux编程| 标签:字体lineeditqpalettesetfontpalette|字号大中小订阅 对一个文本框lineEdit设置字体,首先我建了一个按钮setFontButton用来设置 并定义了它的相应函数setFont,将setFontButton添加到布局中,并通过connect()设置与setFont()关联, 然后定义setFont如下 [code] void FindDialog::setFont() { bool ok; constQFont& font = QFontDialog::getFont(&ok, lineEdit->font(), this, tr("fontDialog")); if(ok) { lineEdit->setFont(font); } } [/code] 这样就可以设置字体了 改变字体或按钮的颜色: 先加入色板类#include 比如要设置lineEdit里字体的颜色为红色 QPalette pal =lineEdit->QPalette(); pal->setColor(QPalette::Text,QColor(255,0,0); lintEdit->setPalette(pal); 这样文本框中的字体就变成红色的了。 如果要通过调用色板来选择字体颜色,可以加上下列代码,其中的按钮创建,连接等省略 [code] void FindDialog::setFont { QPalette palette = lineEdit->palette(); constQColor& color = QColorDialog::getColor(palette.color(QPalette::Base),this); if(color.isValid()) { palette.setColor(QPalette::Text,color); lineEdit->setPalette(palette); } } [/code] Qt中设置widget背景颜色/图片的注意事项(使用样式表setStyleSheet())收藏 在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等。 但是各种方法都有其注意事项,如果不注意则很容易陷入麻烦中。 1:setStyleSheet() 这个函数我一直很喜欢使用,因为只要写一句就可以实现效果,比其他方法都简单,但是其却有一个很值得注意的地方,也就是这个地方让我大吃苦头。 亦即:①:该函数只能用于设置有父窗口的子窗口的背景!如果一个窗口没有子窗口,则无法使用该函数来设置背景颜色或图 片!! ②:同时:对于一个父窗口而言:如果我们用setStyleShette设置了其样式,而对于其子窗口:如果没有用同样的函数来设 置的话, 则其子窗口的样式和其父窗口完全一致,亦即:其集成了自己父窗口的样式! ③:延伸:对顶层窗口(没有父窗口),其有若干个子窗口,则当我们用setStyleShette来设置这个顶层窗口的样式后,依据①可知:该父窗口本身 没有任何变化,亦即设置没有生效;而其子窗口:只要子窗口本身没有用setStyleShette来设置自己的样式表,则其就是用的自己父窗口的样式 表!! 例如: 主窗口(没有父类)为MainWin MainWin::MainWin() { this->setStyleSheet("background-image:url(:/bmp/IMG_0345.JPG)"); iButton = new QPushButton(this); iLabel = new QLabel(iButton); } 运行一下,效果如下: 亦即:虽然我们设置的是顶层的父窗口,但是该样式却是在其子窗口中生效,而顶层父窗口没有任何变化! 这验证了①。 修改一下上例代码: MainWin::MainWin() { this->setStyleSheet("background-image:url(:/bmp/IMG_0345.JPG)"); iButton = new QPushButton(this); iLabel = new QLabel(iButton); iLabel->setStyleSheet("background-image:url(:/bmp/1257253475842.jpg)"); } 则运行效果如下: 可见:子窗口只有调用setStyleSheet()设置了自己的样式后才可以隔断父窗口的样式,否则其将是用父窗口的样式。 再修改一下代码: MainWin::MainWin() { iButton = new QPushButton(this); iButton ->setStyleSheet("background-image:url(:/bmp/IMG_0345.JPG)"); iLabel = new QLabel(iButton); } 运行一下,效果如下: 可见:设置有父窗口的子窗口时:setStyleSheet()一定生效!!! 后来我又思考了一个问题,那就是:对于顶层父窗口,如果我 setStyleSheet()设置了样式表,而对其子窗口,我用其他方法,比如用QPalette调色板来设置背景图片/颜色,这时子窗口的背景到底是 由继承自父窗口的样式表决定呢还是由子窗口本身的QPalette调色板决定呢? 再次修改代码: MainWin::MainWin() { this->setStyleSheet("background-image:url(:/bmp/IMG_0345.JPG)"); iButton = new QPushButton(this); iLabel = new QLabel(iButton); QPalette palette; palette.setBrush(iLabel->backgroundRole(),QBrush(QImage(":/bmp/1257253475842.jpg"))); iLabel->setPalette(palette); iLabel->setAutoFillBackground(true); } 此段代码中我用QPalette来设置子窗口的背景图片,看下到底是样式表还是调色板生效,效果如下: 由此可见:一旦顶层窗口设置了样式表,则其子窗口无论用什么方法来设置背景,都会不生效!!! 那如果不是顶层窗口而仅仅是一般窗口设置了样式表呢?再次修改代码: MainWin::MainWin() { iButton = new QPushButton(this); iButton ->setStyleSheet("background-image:url(:/bmp/IMG_0345.JPG)"); iLabel = new QLabel(iButton); QPalette palette; palette.setBrush(iLabel->backgroundRole(),QBrush(QImage(":/bmp/1257253475842.jpg"))); iLabel->setPalette(palette); iLabel->setAutoFillBackground(true); } 运行效果同上,这说明:不管是顶层窗口还是一般窗口,只要用setStyleSheet设置了样式表,则其子窗口用其它方式设置背景颜色/图片均不生效,只能用同样方式setStyleSheet来设置更改!!! 为了验证上边的结论,再次修改代码: MainWin::MainWin() iButton = new QPushButton(this); iLabel = new QLabel(iButton); QPalette palette; palette.setBrush(iLabel->backgroundRole(),QBrush(QImage(":/bmp/1257253475842.jpg"))); iLabel->setPalette(palette); iLabel->setAutoFillBackground(true); } 运行一下: 此时调色板才生效,这也间接证明了上述结论。 ========================================================================== 总结: 1:不要在顶层窗口(无父类的窗口)中使用setStyleSheet() ,否则其一父窗口的背景不会改变,其次其子窗口的背景设置方法变得局限唯一,不能再使用其它方法! 2:如果一个一般窗口(非顶层窗口)还有子窗口,那最好不要使用setStyleSheet()来设置其背景颜色,因为虽然此时该窗口的背景设置是生效 的,但是其子窗口的背景设置也变得局限唯一,只能使用setStyleSheet,而不能使用其它方法! 当然:你如果就是只想使用这种方法,那也完全可以!! 说白了就是:不要再MainWindow中使用setStyleSheet()! 而上边之所以强调拓宽子窗口设置背景的方法范围,这是因为:如果只能用setStyleSheet样式表来设置背景图片的话,该图片是无法缩放的,如果 其大小与widget窗口大小不相符,则我们无法用程序来实现图片的缩放,除非我们直接处理图片使其大小与widget窗口相符; 而如果不局限于用setStyleSheet样式表来设置的话,我们可以选择用QPalette调色版,其内部setBrush()之前,我们完全可以先 对图片进行scale缩放再刷到窗口上,这样就避免直接去处理图片,灵活性强一点! ========================================================================== 注意:该文只针对QWidget体系,并不适用用QGraphicsWidget体系!关于这两种体系之间的区分,详见文章   届云计算大会门票抢购:史上最低价,每日限5张!【分享季1】:网友推荐130个经典资源,分享再赠分! Qt将ttf文件设置为默认字体 分类:Qt编程2012-03-23 15:1427人阅读评论(0)收藏举报 [cpp]view plaincopyprint? 1. //将字体文件名传给addApplicationFont,得到字体的Id 2. intfontId = QFontDatabase::addApplicationFont("./res/msyh.ttf"); 3. //将字体Id传给applicationFontFamilies,得到一个QStringList,其中的第一个元素为新添加字体的family 4. QStringmsyh = QFontDatabase::applicationFontFamilies ( fontId ).at(0); 5. QFont font(msyh,10); 6. //将此字体设为QApplication的默认字体 7. QApplication::setFont(font); 设置默认字体 先定义一个对象 QFont font("simsun", 10, QFont::Normal); 然后在其他窗口中这样设置 QWidget *widget = new QWidget; widget->setFont(font);
本文档为【QT中设置字体和更改字体颜色】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_314871
暂无简介~
格式:doc
大小:34KB
软件:Word
页数:12
分类:互联网
上传时间:2019-01-24
浏览量:430