赞
踩
目录
可以设置大小,也可以获取大小。
- void Widget::testSize()
- {
- //widget的尺寸
- qDebug()<<this->size()<<this->width()<<this->height();
- //窗口的矩形区域
- qDebug()<<this->rect();
- QPushButton *btn = new QPushButton(this);
- connect(btn,&QPushButton::clicked,this,[=](){
- //窗口的几何区域,必须在构造完成后获取才正确
- qDebug()<<this->geometry()<<this->frameGeometry();
- //相对于父窗口的坐标
- qDebug()<<pos();
- });
- //geometry不带边框,frameGeometry带边框
- //调整窗口大小
- resize(320,250);
- //设置最大大小和最小大小
- setMaximumSize(600,700);
- setMinimumSize(200,300);
- }
关于图标的设置,我们常常需要添加资源文件,下面介绍如何添加:
首先打开项目添加新文件:
给文件命名:
可以看到出现了资源文件:
然后在这里添加路径:
添加完编译一下,就可以看到自己添加的文件啦:
使用时复制一下路径就好,就像这样:
- void Widget::testIcon()
- {
- connect(this,&QWidget::windowIconChanged,this,[=](){
- qDebug()<<"接收到了";
- });
- connect(this,&QWidget::windowTitleChanged,this,[=](){
- qDebug()<<"Title";
- });
- //设置窗口图标
- setWindowIcon(QIcon(":/images/zay.png"));
- //设置窗口的标题
- setWindowTitle("小蓝的窗口");
- }
平时有用到查找图标的资源网站:iconfont-阿里巴巴矢量图标库
其他操作详见:QIcon类
生成一个ico文件之后把它放在源文件所在目录,即跟.pro文件同级目录,然后在pro文件中添加代码:
RC_ICONS += 图标名.ico
设置光标样式时有枚举类,详见Qt::CursorShape类,默认的有十六种,也可以自定义,具体如下:
- void Widget::testCursor()
- {
- //设置光标样式,有枚举类
- setCursor(Qt::CursorShape::BusyCursor);
- QPushButton *btn = new QPushButton("切换光标样式",this);
- connect(btn,&QPushButton::clicked,this,[=](){
- static int i = 0;
- setCursor(Qt::CursorShape(i));
- i = (i+1)%16;
- });
- //自定义光标样式
- setCursor(QCursor(QPixmap(":/images/cursor_two.png")));
- }
有两种,一种是setToolTip,一种是setWhatsThis。
前一种是你的鼠标移动上去,它会自动显示,适合篇幅短一点的提示,后一种是帮助信息,运行程序后按Shift + F1会出现,适合详细的帮助。
- void Widget::testTip()
- {
- auto btn = new QPushButton("我是小蓝",this);
-
- //设置控件提示
- btn->setToolTip("我是btn");
- this->setToolTip("我是窗口");
- //这是什么?
- setWhatsThis("这是我的第一个窗口");
-
- auto btn1 = new QPushButton("进入Whatsthis",this);
- btn1->move(100,0);
- connect(btn1,&QPushButton::clicked,this,[](){
- QWhatsThis::enterWhatsThisMode();
- });
- }
也有静态函数enterWhatsThisMode,能直接进入whatsthis模式。
没啥好说,自己试一下。
- void Widget::testSlots()
- {
- auto btn = new QPushButton("button",this);
- connect(btn,&QPushButton::clicked,this,[=](){
- // this->close();
- // this->hide();
- // this->show();
- // this->setEnabled(false);//设置控件禁用,按钮点不了
- // showFullScreen();//全屏
- // showMinimized();//最小化
- // showMaximized();//最大化
- // showNormal();//恢复窗口
- setVisible(false);//设置窗口是否可见
- });
- //判断一个控件有没有被释放,可以通过destroy信号判断
- }
还是使用一些枚举类,直接设置会覆盖,所以添加多种可以用 “|” 操作符,删除某种可以用 “&~” 操作符。
- void Widget::testState()
- {
- //窗口标志:最大化最小化,关闭按钮,追加
- //直接设置会覆盖某些标志
- setWindowFlags(Qt::WindowType::WindowContextHelpButtonHint);
- //不覆盖
- //setWindowFlags(windowFlags()|Qt::WindowType::WindowContextHelpButtonHint);
- //移除
- setWindowFlags(windowFlags() &~Qt::WindowType::WindowContextHelpButtonHint);
- setWindowFlag(Qt::WindowType::WindowCloseButtonHint,true);
- }
详细可见Qt::WindowType类,这里列出一些:
枚举 | 值(十六进制) | 描述 |
---|---|---|
Qt::FramelessWindowHint | 0x00000800 | 产生一个无边框的窗口。 用户不能通过窗口系统移动或调整无边框窗口的大小 |
Qt::NoDropShadowWindowHint | 0x40000000 | 去掉窗口阴影 |
Qt::CustomizeWindowHint | 0x02000000 | 关闭默认的窗口标题提示 |
Qt::WindowTitleHint | 0x00001000 | 给窗口一个标题栏 |
Qt::WindowSystemMenuHint | 0x00002000 | 添加一个窗口系统菜单,可能还有一个关闭按钮(例如在Mac上)。 如果你需要隐藏或显示关闭按钮,使用WindowCloseButtonHint更便于移植。 |
Qt::WindowMinimizeButtonHint | 0x00004000 | 添加一个最小化按钮 |
Qt::WindowMaximizeButtonHint | 0x00008000 | 添加一个最大化按钮 |
Qt::WindowMinMaxButtonsHint | WindowMinimizeButtonHint |WindowMaximizeButtonHint | 添加最小化和最大化按钮 |
Qt::WindowCloseButtonHint | 0x08000000 | 添加一个关闭按钮 |
Qt::WindowContextHelpButtonHint | 0x00010000 | 向对话框添加上下文帮助按钮 |
Qt::WindowStaysOnTopHint | 0x00040000 | 通知窗口系统该窗口应该位于所有其他窗口的顶部 |
Qt::WindowStaysOnBottomHint | 0x04000000 | 通知窗口系统该窗口应位于所有 |
个人比较喜欢setWindowFlag函数,直接设置false或者true就行。
详见Qt::WindowState类,这里简单列举一些操作:
- w->setWindowState(w->windowState() ^ Qt::WindowFullScreen);
- //为什么不用|操作符,因为用了就换不回来了,异或就是你在一个状态时,按钮效果是另一个状态
w->setWindowState((w->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
- void Widget::testStatus()
- {
- //设置窗口状态,也有枚举
- QPushButton* btn = new QPushButton("bbutton",this);
- connect(btn,&QPushButton::clicked,this,[=](){
- setWindowState(this->windowState() ^ Qt::WindowState::WindowFullScreen);
- qDebug()<<windowState();
- });
- }
枚举 | 值 | 描述 |
---|---|---|
Qt::WindowNoState | 0x00000000 | 窗口没有状态设置(正常状态) |
Qt::WindowMinimized | 0x00000001 | 窗口被最小化(即图标化) |
Qt::WindowMaximized | 0x00000002 | 窗户周围有一个框架,使其最大化 |
Qt::WindowFullScreen | 0x00000004 | 窗口填充了整个屏幕,周围没有任何边框 |
Qt::WindowActive | 0x00000008 | 该窗口是活动窗口,即它有键盘焦点 |
在Qt::WidgetAttribute类中
- void Widget::testAttr()
- {
- QPushButton *btn = new QPushButton("button",this);
- //设置关闭的的时候释放属性
- btn->setAttribute(Qt::WidgetAttribute::WA_DeleteOnClose);
- connect(btn,&QPushButton::clicked,this,[=](){
- btn->close();
- });
- //设置窗口背景透明属性,要先去边框
- this->setAttribute((Qt::WidgetAttribute::WA_TranslucentBackground));
- //去掉窗口边框
- this->setWindowFlag(Qt::WindowType::FramelessWindowHint,true);
-
- }
枚举 | 值(十进制) | 描述 |
---|---|---|
Qt::WA_AcceptDrops | 78 | 允许来自拖放操作的数据被拖放到小部件上(参见QWidget::setAcceptDrops()) |
Qt::WA_AlwaysShowToolTips | 84 | 为非活动窗口启用工具提示 |
Qt::WA_CustomWhatsThis | 47 | 表示小部件希望在“这是什么?”模式下继续正常运行。 这是由小部件的作者设置的。 |
Qt::WA_DeleteOnClose | 55 | 使Qt在小部件接受关闭事件时删除该小部件 |
Qt::WA_MouseTracking | 2 | 指示小部件启用了鼠标跟踪。 参见QWidget:: mouseTracking |
Qt::WA_TranslucentBackground | 120 | 指示小部件应该有一个半透明的背景,也就是说,小部件的任何非透明区域都将是半透明的,因为小部件将有一个alpha通道。 设置此标志将导致设置WA_NoSystemBackground。 在Windows上,小部件还需要设置Qt:: framesswindowhint窗口标志。 该标志由小部件的作者设置或清除。 |
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。