当前位置:   article > 正文

Qt学习笔记(3)_qt setcursor

qt setcursor

目录

一.窗口大小

二.设置图标

三. 设置鼠标行为

四.设置提示

五.常用槽函数

六.设置窗口标志

七.设置窗口状态

八. 设置窗口属性


一.窗口大小

可以设置大小,也可以获取大小。

  1. void Widget::testSize()
  2. {
  3. //widget的尺寸
  4. qDebug()<<this->size()<<this->width()<<this->height();
  5. //窗口的矩形区域
  6. qDebug()<<this->rect();
  7. QPushButton *btn = new QPushButton(this);
  8. connect(btn,&QPushButton::clicked,this,[=](){
  9. //窗口的几何区域,必须在构造完成后获取才正确
  10. qDebug()<<this->geometry()<<this->frameGeometry();
  11. //相对于父窗口的坐标
  12. qDebug()<<pos();
  13. });
  14. //geometry不带边框,frameGeometry带边框
  15. //调整窗口大小
  16. resize(320,250);
  17. //设置最大大小和最小大小
  18. setMaximumSize(600,700);
  19. setMinimumSize(200,300);
  20. }

二.设置图标

关于图标的设置,我们常常需要添加资源文件,下面介绍如何添加:

首先打开项目添加新文件:

给文件命名:

 

 可以看到出现了资源文件:

 然后在这里添加路径:

添加完编译一下,就可以看到自己添加的文件啦:

 

使用时复制一下路径就好,就像这样:

  1. void Widget::testIcon()
  2. {
  3. connect(this,&QWidget::windowIconChanged,this,[=](){
  4. qDebug()<<"接收到了";
  5. });
  6. connect(this,&QWidget::windowTitleChanged,this,[=](){
  7. qDebug()<<"Title";
  8. });
  9. //设置窗口图标
  10. setWindowIcon(QIcon(":/images/zay.png"));
  11. //设置窗口的标题
  12. setWindowTitle("小蓝的窗口");
  13. }

平时有用到查找图标的资源网站:iconfont-阿里巴巴矢量图标库

图片格式转换网站: Convertio — 文件转换器

其他操作详见:QIcon类

  • 小知识,如何修改生成的应用程序的图标

 生成一个ico文件之后把它放在源文件所在目录,即跟.pro文件同级目录,然后在pro文件中添加代码:

RC_ICONS += 图标名.ico

三. 设置鼠标行为

设置光标样式时有枚举类,详见Qt::CursorShape类,默认的有十六种,也可以自定义,具体如下:

  1. void Widget::testCursor()
  2. {
  3. //设置光标样式,有枚举类
  4. setCursor(Qt::CursorShape::BusyCursor);
  5. QPushButton *btn = new QPushButton("切换光标样式",this);
  6. connect(btn,&QPushButton::clicked,this,[=](){
  7. static int i = 0;
  8. setCursor(Qt::CursorShape(i));
  9. i = (i+1)%16;
  10. });
  11. //自定义光标样式
  12. setCursor(QCursor(QPixmap(":/images/cursor_two.png")));
  13. }

四.设置提示

有两种,一种是setToolTip,一种是setWhatsThis。

前一种是你的鼠标移动上去,它会自动显示,适合篇幅短一点的提示,后一种是帮助信息,运行程序后按Shift + F1会出现,适合详细的帮助。

  1. void Widget::testTip()
  2. {
  3. auto btn = new QPushButton("我是小蓝",this);
  4. //设置控件提示
  5. btn->setToolTip("我是btn");
  6. this->setToolTip("我是窗口");
  7. //这是什么?
  8. setWhatsThis("这是我的第一个窗口");
  9. auto btn1 = new QPushButton("进入Whatsthis",this);
  10. btn1->move(100,0);
  11. connect(btn1,&QPushButton::clicked,this,[](){
  12. QWhatsThis::enterWhatsThisMode();
  13. });
  14. }

也有静态函数enterWhatsThisMode,能直接进入whatsthis模式。

五.常用槽函数

没啥好说,自己试一下。

  1. void Widget::testSlots()
  2. {
  3. auto btn = new QPushButton("button",this);
  4. connect(btn,&QPushButton::clicked,this,[=](){
  5. // this->close();
  6. // this->hide();
  7. // this->show();
  8. // this->setEnabled(false);//设置控件禁用,按钮点不了
  9. // showFullScreen();//全屏
  10. // showMinimized();//最小化
  11. // showMaximized();//最大化
  12. // showNormal();//恢复窗口
  13. setVisible(false);//设置窗口是否可见
  14. });
  15. //判断一个控件有没有被释放,可以通过destroy信号判断
  16. }

六.设置窗口标志

还是使用一些枚举类,直接设置会覆盖,所以添加多种可以用 “|” 操作符,删除某种可以用 “&~” 操作符。

  1. void Widget::testState()
  2. {
  3. //窗口标志:最大化最小化,关闭按钮,追加
  4. //直接设置会覆盖某些标志
  5. setWindowFlags(Qt::WindowType::WindowContextHelpButtonHint);
  6. //不覆盖
  7. //setWindowFlags(windowFlags()|Qt::WindowType::WindowContextHelpButtonHint);
  8. //移除
  9. setWindowFlags(windowFlags() &~Qt::WindowType::WindowContextHelpButtonHint);
  10. setWindowFlag(Qt::WindowType::WindowCloseButtonHint,true);
  11. }

详细可见Qt::WindowType类,这里列出一些:

枚举值(十六进制)描述
Qt::FramelessWindowHint0x00000800产生一个无边框的窗口。 用户不能通过窗口系统移动或调整无边框窗口的大小
Qt::NoDropShadowWindowHint0x40000000去掉窗口阴影
Qt::CustomizeWindowHint0x02000000关闭默认的窗口标题提示
Qt::WindowTitleHint0x00001000给窗口一个标题栏
Qt::WindowSystemMenuHint0x00002000添加一个窗口系统菜单,可能还有一个关闭按钮(例如在Mac上)。 如果你需要隐藏或显示关闭按钮,使用WindowCloseButtonHint更便于移植。
Qt::WindowMinimizeButtonHint0x00004000添加一个最小化按钮
Qt::WindowMaximizeButtonHint0x00008000添加一个最大化按钮
Qt::WindowMinMaxButtonsHintWindowMinimizeButtonHint |WindowMaximizeButtonHint添加最小化和最大化按钮
Qt::WindowCloseButtonHint0x08000000添加一个关闭按钮
Qt::WindowContextHelpButtonHint0x00010000向对话框添加上下文帮助按钮
Qt::WindowStaysOnTopHint0x00040000通知窗口系统该窗口应该位于所有其他窗口的顶部
Qt::WindowStaysOnBottomHint0x04000000通知窗口系统该窗口应位于所有

 个人比较喜欢setWindowFlag函数,直接设置false或者true就行。

七.设置窗口状态

详见Qt::WindowState类,这里简单列举一些操作:

  • 如果窗口不可见(即isVisible()返回false),窗口状态将在调用show()时生效。 对于可见窗口,更改是立即的。 例如,要在全屏模式和普通模式之间切换,请使用以下代码:
  1. w->setWindowState(w->windowState() ^ Qt::WindowFullScreen);
  2. //为什么不用|操作符,因为用了就换不回来了,异或就是你在一个状态时,按钮效果是另一个状态
  • 为了恢复和激活最小化的窗口(同时保持其最大化和/或全屏状态),使用以下方法:
w->setWindowState((w->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
  1. void Widget::testStatus()
  2. {
  3. //设置窗口状态,也有枚举
  4. QPushButton* btn = new QPushButton("bbutton",this);
  5. connect(btn,&QPushButton::clicked,this,[=](){
  6. setWindowState(this->windowState() ^ Qt::WindowState::WindowFullScreen);
  7. qDebug()<<windowState();
  8. });
  9. }
枚举描述
Qt::WindowNoState0x00000000窗口没有状态设置(正常状态)
Qt::WindowMinimized0x00000001窗口被最小化(即图标化)
Qt::WindowMaximized0x00000002窗户周围有一个框架,使其最大化
Qt::WindowFullScreen0x00000004窗口填充了整个屏幕,周围没有任何边框
Qt::WindowActive0x00000008该窗口是活动窗口,即它有键盘焦点

八. 设置窗口属性

Qt::WidgetAttribute类中
  • setAttribute用来设置小部件的属性,testAttribute查看是否设置了某种属性。
  1. void Widget::testAttr()
  2. {
  3. QPushButton *btn = new QPushButton("button",this);
  4. //设置关闭的的时候释放属性
  5. btn->setAttribute(Qt::WidgetAttribute::WA_DeleteOnClose);
  6. connect(btn,&QPushButton::clicked,this,[=](){
  7. btn->close();
  8. });
  9. //设置窗口背景透明属性,要先去边框
  10. this->setAttribute((Qt::WidgetAttribute::WA_TranslucentBackground));
  11. //去掉窗口边框
  12. this->setWindowFlag(Qt::WindowType::FramelessWindowHint,true);
  13. }
枚举值(十进制)描述
Qt::WA_AcceptDrops78允许来自拖放操作的数据被拖放到小部件上(参见QWidget::setAcceptDrops())
Qt::WA_AlwaysShowToolTips84为非活动窗口启用工具提示
Qt::WA_CustomWhatsThis47表示小部件希望在“这是什么?”模式下继续正常运行。 这是由小部件的作者设置的。
Qt::WA_DeleteOnClose55使Qt在小部件接受关闭事件时删除该小部件
Qt::WA_MouseTracking2指示小部件启用了鼠标跟踪。 参见QWidget:: mouseTracking
Qt::WA_TranslucentBackground120指示小部件应该有一个半透明的背景,也就是说,小部件的任何非透明区域都将是半透明的,因为小部件将有一个alpha通道。 设置此标志将导致设置WA_NoSystemBackground。 在Windows上,小部件还需要设置Qt:: framesswindowhint窗口标志。 该标志由小部件的作者设置或清除。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/94995
推荐阅读
相关标签
  

闽ICP备14008679号