QT常用控件一

QWidget类的常用属性

1.enable属性

描述一个控件是否处于“可用”状态。可用是相对禁用的一个状态,禁用是指该控件不能接收任何用户的输入事件,并且外观往往是灰色的。如果一个widget被禁用,则该widget的子元素也被禁用。可以使用isEnabled()获取控件的可用状态。使用setEnabled()可以设置控件是否可用。true表示可用,false表示禁用。

在这里插入图片描述

图1. 按钮2触发按钮1禁用

在这里插入图片描述


图2. 运行结果

在同一个界面中,要求不同的控件的objectName也是必须不同的(不能重复)。后续就可以通过ui->objectName方式来获取到对应的控件对象了。

2.geometry属性

1)x/y:控件的位置坐标。
2)width/height:控件的宽度和高度。
geometry()获取控件的geometry属性,setGeometry()设置控件的geometry属性。geometry()获取到属性返回QRect类的对象(QRect包含了x/y/width/height,其中x,y是左上角的坐标),可以通过设置QRect类对象的成员的值,再通过setGeometry(QRect rect)改变geometry属性。
3)window frame的影响
window frame指的是widget本身和上面操作系统生成的小条形区域。在这种情况下widget下子元素的位置对于不同的API可能不一样。有的是小条形区域的左上角为原点即考虑window frame,有的是widget的左上角为原点,即不考虑window frame,如图3所示。可以通过frameGeometry()获取控件的frameGeometry属性。

在这里插入图片描述


图3. geometry与frameGeometry的区别

3.windowTitle属性

当前windowTitle属性是从属于QWidget的,windowTitle属性只能针对顶层窗口,这样Qwidget才有效。注意只能通过QWidget类的对象设置windowTitle属性才有效,设用其他类对象设置windowTitle属性是无效的,但是也不会报错提示,也没有任何效果,需要特别注意。
`button->setWindowTitle("窗口标题");//button是一个QPushButton类对象
								   //运行该代码不会有任何效果但也不会报错,很危险!`

4.windowIcon控件图标属性

1)可以通过windowIcon()获取到控件的图标,返回 QIcon对象。注意:QIcon自身是一个比较小的对象,创建出来之后就是要设置到某个QWidget里面,QIcon对象本身释放不释放不影响图标最终的显示,QIcon也不支持对象树,无法给他指定父对象,无法通过对象树对其进行释放。可以通过setWindowIcon(const QIcon& icon)设置控件的图标。注意:windowIcon属性和windowTitle属性一样只能针对顶层窗口。
2)使用icon()设置图标路径时尽量使用反斜杠(/),不要使用正斜杠(\),因为正斜杠容易和其他字符形成转义字符。设置的路径不能带有中文,且为相对路径。因为程序最终是要发布到用户电脑上,我们无法确保开发机上图片的路径和用户电脑上的路径完全一致。
3)qrc机制:它可以确保你的图片所在的路径在目标机器上存在并且图片不会被用户弄丢。其原理就是给QT项目引入一个额外的xml文件(后缀名用.qrc表示),在这个xml文件中把要使用的图片资源导入进去,并且在xml中进行记录。当QT编译项目的时候,就会根据qrc中描述的图片信息找到图片内容,并提取出图片的二进制数据,把这些二进制数据转成C++代码编译进.exe可执行文件中。但是qrc无法导入太大的资源文件,比如搞好几个G的视频文件qrc就无能为力了。qrc使用方式如下:
a)在项目中创建一个qrc文件,文件名不要带中文和特殊符号。

在这里插入图片描述


图4. qrc文件的创建1

在这里插入图片描述


图5. qrc文件的创建2

b)先创建一个前缀(prefix),可以理解成一个虚拟目录,这个目录没有在电脑上真实存在,是QT自己抽象出来的。

在这里插入图片描述


图6. 添加prefix

c)添加对应图片文件, 必须保证图片文件位于项目文件夹的根目录下

在这里插入图片描述


图7. 添加图片文件

d)使用icon()设置图标路径,通过setWindowIcon(const QIcon& icon)设置控件的窗口图标。注意使用qrc时需要加前缀冒号,后面是设置的prefix+图片文件名。运行结果如图8所示,linux中窗口图标没有在窗口左上角,在图中红框位置可以看到,不要认为没有窗口图标。

在这里插入图片描述


图8. 设置窗口图标

我们可以打开对应的cpp文件可以看到大量的图片二进制数据,如图9所示

在这里插入图片描述


图9. qrc编译为对应C++文件的内容

5.windowOpacity控件的透明度属性

通过windowOpacity()获取控件的透明度,返回值为0.0-1.0的float,0.0表示全透明,1.0表示不透明。通过setWindowOpacity(float n)设置控件的透明度,n大于1.0之后不会进行设置,即在setWindowOpacity()函数内部已经进行了判定,但是最好进行判定。

在这里插入图片描述


图10. 窗口的透明度调整

6.cursor鼠标的光标属性

1)通过cursor()获取控件的cursor属性,返回值为QCursor类对象。通过setCursor(const QCursor& cursor)设置控件的窗cursor属性,设置后鼠标停留在该控件上时生效。可以使用QGuiApplication::setOverrideCursor(const QCursor& cursor)设置全局的cursor属性,会对整个程序的所有控件设置该属性,将会覆盖setCursor的设置结果。在QT中枚举了很多经典的图标,如图12所示。

在这里插入图片描述


图11. 控件cursor属性设为BusyCursor

在这里插入图片描述


图12. QT中内置的Cursor属性

2)将控件的cursor属性设置为自定义图标。和设置控件的Icon属性一样,我们可以将图片文件添加到创建的qrc文件中,方法不在赘述。使用pixmap()获取到图标文件,可以通过相关的方法对获取到的图片进行缩放等其他操作,最后使用操作后的使用pixmap对象构造QCursor的类对象。然后通过setCursor设置即可。此外setCursor还可以设置自定义图标热点位置(鼠标点击的有效位置)。

在这里插入图片描述


图13. 设置Cursor属性为自定义图标

7.font控件的字体相关属性

通过font()获取当前widget的字体信息,返回QFont对象。使用setFont(const QFont& font)设置当前控件的字体信息。QFont中的属性如图14所示

在这里插入图片描述


图14. QFont中的字体属性

8.toolTip控件提示属性

通过setToolTip()设置toolTip属性。鼠标悬停在该控件上时会有提示说明。使用setToolTipDuring()设置toolTip提示的时间,单位为ms, 时间到后toolTip自动消失。也可以获取toolTip属性,但几乎不用,大多数时候都是设置toolTip属性。

在这里插入图片描述


图15. toolTip属性效果

9.focusPolicy控件的焦点策略属性

通过focusPolicy()获取该控件的focusPolicy,返回 Qt::FocusPolicy。使用setFocusPolicy(Qt::FocusPolicy policy)设置控件的 focusPolicy。Qt::FocusPolicy 是一个枚举类型,取值如下:
• Qt::NoFocus:控件不会接收键盘焦点,给一个输入框设置该属性后将无法选中该输入框进行输入
• Qt::TabFocus:控件可以通过Tab键接收焦点
• Qt::ClickFocus:控件在鼠标点击时接收焦点
• Qt::StrongFocus:控件可以通过Tab键和鼠标点击接收焦点 (默认值)
• Qt::WheelFocus:类似于 Qt::StrongFocus,同时控件也通过鼠标滚轮获取到焦点(新增的选项,一般很少使用)

10.styleSheet属性

此处的语法格式同CSS,使用键值对的方式设置控件样式。其中键和值之间使用冒号(:),分割键值对之间使用分号(;)分割。
void Widget::on_pushButton_dark_clicked()
{
    this->setStyleSheet("background-color: #333");
    ui->textEdit->setStyleSheet("background-color: #333; color: #fff;");
    ui->pushButton_light->setStyleSheet("color: #fff");
    ui->pushButton_dark->setStyleSheet("color: #fff");
}
void Widget::on_pushButton_light_clicked()
{
    this->setStyleSheet("background-color: #f3f3f3");
    ui->textEdit->setStyleSheet("background-color: #fff; color: #000;");
    ui->pushButton_light->setStyleSheet("color: #000");
    ui->pushButton_dark->setStyleSheet("color: #000");
}

在这里插入图片描述


图16. styleSheet设置控件属性实例结果

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值