qt主窗口没有命名为show的成员,如何添加? - 爱问答

(爱问答)

qt主窗口没有命名为show的成员,如何添加?

以前遇到的很多小知识,从今天开始都一点一点记录下来。。。窗口背景无非两种:背景色、背景图片。Qt中窗口背景如何设置?下面介绍三种方法:一、QPalette设置背景二、实现paintEvent,使用QPainter来绘制背景三、使用QSS来设置背景关于QSS的使用不想多说,一般我不用QSS设置窗口背景,也不建议使用。(注意:这里是对于窗口而言)。如果是子部件当然可以。因为窗口使用QSS设置背景之后,若子部件不使用同样的方式来设置,默认则会继承父窗口的样式子部件一般况下也不需要设置背景图片,即使需要使用QSS也完全可以满足。设置较多的是背景色与图标,QSS中使用background或者background-color的方式可以实现背景色的设置,图标则可以使用setPixmap或者setIcon来设置!下面介绍QPalette以及paintEvent一、QPalette设置背景构造函数中可以使用如下方式:(1)设置背景色QPalette palette(this->palette());palette.setColor(QPalette::Background, Qt::black);this->setPalette(palette);或:QPalette palette;palette.setBrush(this->backgroundRole(), Qt::black);this->setPalette(palette);这里setColor和setBrush都可以使用!(2)设置背景图片QPixmap pixmap = QPixmap(":/qm/safe").scaled(this->size());QPalette palette(this->palette());palette.setBrush(QPalette::Background, QBrush(pixmap));this->setPalette(palette);上面方式无论设置背景色还是背景图片QPalette::Background与this->backgroundRole()是等价的!二、paintEvent设置背景(1)设置背景色void IIIMark::paintEvent(QPaintEvent *){QPainter painter(this);painter.setBrush(Qt::black);painter.drawRect(this->rect());}(2)设置背景图片void IIIMark::paintEvent(QPaintEvent *){QPixmap pixmap = QPixmap(":/qm/safe").scaled(this->size());QPainter painter(this);painter.drawPixmap(this->rect(), pixmap);}注意:(1)以上都是用scaled方式对图片进行了适应窗口大小的设置,因为所给的图片大小不一定满足要求,所以采用此方式!当然图片经过拉伸或者压缩之后会变形(纯色图片除外),所以对图片采用此方式时需要注意。(2)设置背景范围的时候如果需要充满整个窗口最好使用this->rect(),因为我看到很多人在使用QRect(0, 0, 400, 400)之类的语句,那么如果窗口大小改变了呢?此句是不是要跟着变呢?(3)如果需要背景图片或者背景色随可以发生改变时,也就是所谓的换肤功能,则采用paintEvent的方式,在需要改变的时候使用update()来进行更新。(4)this->setAutoFillBackground(true)又让我想起了tr(),被很多人滥用。这句话在什么时候使用呢?不妨采用QPalette设置背景的方式加上与去掉这句话对比一下(在有父窗口的况下使用)。如果这个QWidget直接show,则有背景色,如果放到一个父窗口中,就没有效果。添加该句即可!

下一篇:电脑没有声音

上一篇:gps定位器,农村用的,不需要显示地图,显示指针,gps定位器在哪指针往哪指

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?