今天又是学到很多的一天啊!
设置背景图片的方法
今天开始使用代码来实现昨天做出的界面,并熟悉代码中出现的函数
- 使用setPixmap
- 使用setstylesheet中的css语法设置:“background-image:"/“border-image”
昨天说过了border-image是将图片平铺在mainwindow中,是某种意义上的实现了图片自适应窗口,今天又学到了使用setScaledContents()函数,这个是真正意义上的图片自适应
关于父窗口使用背景图片影响到子控件的问题
之前在使用qtdesigner创建界面的时候也遇到了这个问题,解决这个问题的方法是在父控件的stylesheet中加上作用域
比如这个父窗口的名字是mainwindow,那么就使用
#mainwindow{
border-image:url(:/Path/XXX.png) ;
}
使用这种方式可以控制父窗口的背景不会影响到子控件。
同样的,在使用qtcreator开发界面的是候也遇到了这样的问题,解决方法同样是使用父窗口的setstylesheet(),加入上面的代码。但是要注意的是:
父窗口的名字需要重新创建,因为setstylesheet是使用css格式的,作用域的名字要使用setObjectName()重新定义,作为一个唯一的标识符
下面是一个示例代码
QLabel* labell=new QLabel(this);
labell->setObjectName("Labell");
labell->setStyleSheet("#Labell{Font-family:宋体;}");
虽然在chatgpt上提问,回答是可以使用,也可以不使用
回答如下
在 Qt 中,setObjectName() 函数用来给控件设置一个唯一的名称标识符。这个名称可以在代码中用来查找和操作控件,并且还可以在样式表中使用 ID 选择器来限定样式的作用范围。
具体来说,当您调用 setObjectName() 函数为一个控件设置名称时,它会将该名称存储在控件的属性中。这个名称可以被其他部分的代码用来查找并操作这个控件。例如,您可以使用 findChild() 函数在父窗口中查找特定名称的子控件,或者在信号槽连接中使用名称来指定信号源和槽接收器。
此外,当您在样式表中使用 ID 选择器时,您需要为控件设置一个唯一的名称才能使选择器生效。如果没有设置名称,样式表中的 ID 选择器无法与控件匹配,并且样式不会应用到相应的控件上。
因此,使用 setObjectName() 函数可以让您更容易地查找和操作控件,并且可以让您使用 ID 选择器来限定样式的作用范围。在实际使用中,我们建议为所有的主要控件(如窗口、对话框、工具栏等)设置名称,以方便管理和维护代码。
在设置样式表时不一定需要为控件设置对象名称。如果您只是想为单个控件设置样式,那么可以直接在控件的构造函数或初始化代码中使用 setStyleSheet() 函数来指定样式。
在QT中不用担心申请的空间不会被释放的问题
因为在程序结束时,Qt会自动使用析构函数释放内存文章来源:https://www.toymoban.com/news/detail-460029.html
关于段错误的问题
一定要注意在头文件中定义的变量,在对应的源文件中需要申请内存空间,如果一个没有申请内存空间的成员变量被使用,那么就可能出现段错误,同时文章来源地址https://www.toymoban.com/news/detail-460029.html
到了这里,关于初学QT(Day02)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!