QWidget窗口类

QWidget窗口类

  • 设置父对象
  • 窗口位置
  • 窗口尺寸
  • 窗口标题和图标
  • 信号
  • 槽函数
  • 例子1
  • 例子3
  • 例子3

设置父对象

// 构造函数
QWidget::QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());// 公共成员函数
// 给当前窗口设置父对象
void QWidget::setParent(QWidget *parent);
void QWidget::setParent(QWidget *parent, Qt::WindowFlags f);
// 获取当前窗口的父对象, 没有父对象返回 nullptr
QWidget *QWidget::parentWidget() const;

窗口位置

//------------- 窗口位置 -------------
// 得到相对于当前窗口父窗口的几何信息, 边框也被计算在内
QRect QWidget::frameGeometry() const;
// 得到相对于当前窗口父窗口的几何信息, 不包括边框
const QRect &geometry() const;
// 设置当前窗口的几何信息(位置和尺寸信息), 不包括边框
void setGeometry(int x, int y, int w, int h);
void setGeometry(const QRect &);// 移动窗口, 重新设置窗口的位置
void move(int x, int y);
void move(const QPoint &);

窗口尺寸

//------------- 窗口尺寸 -------------
// 获取当前窗口的尺寸信息
QSize size() const
// 重新设置窗口的尺寸信息
void resize(int w, int h);
void resize(const QSize &);
// 获取当前窗口的最大尺寸信息
QSize maximumSize() const;
// 获取当前窗口的最小尺寸信息
QSize minimumSize() const;
// 设置当前窗口固定的尺寸信息
void QWidget::setFixedSize(const QSize &s);
void QWidget::setFixedSize(int w, int h);
// 设置当前窗口的最大尺寸信息
void setMaximumSize(const QSize &);
void setMaximumSize(int maxw, int maxh);
// 设置当前窗口的最小尺寸信息
void setMinimumSize(const QSize &);
void setMinimumSize(int minw, int minh);// 获取当前窗口的高度    
int height() const;
// 获取当前窗口的最小高度
int minimumHeight() const;
// 获取当前窗口的最大高度
int maximumHeight() const;
// 给窗口设置固定的高度
void QWidget::setFixedHeight(int h);
// 给窗口设置最大高度
void setMaximumHeight(int maxh);
// 给窗口设置最小高度
void setMinimumHeight(int minh);// 获取当前窗口的宽度
int width() const;
// 获取当前窗口的最小宽度
int minimumWidth() const;
// 获取当前窗口的最大宽度
int maximumWidth() const;
// 给窗口设置固定宽度
void QWidget::setFixedWidth(int w);
// 给窗口设置最大宽度
void setMaximumWidth(int maxw);

窗口标题和图标

//------------- 窗口图标 -------------
// 得到当前窗口的图标
QIcon windowIcon() const;
// 构造图标对象, 参数为图片的路径
QIcon::QIcon(const QString &fileName);
// 设置当前窗口的图标
void setWindowIcon(const QIcon &icon);//------------- 窗口标题 -------------
// 得到当前窗口的标题
QString windowTitle() const;
// 设置当前窗口的标题
void setWindowTitle(const QString &);
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QString wintitle = "title";this->setWindowTitle(wintitle);QString pic = "E:\\Code\\Qt\\myQWidget\\a.png";QIcon *qicon = new QIcon(pic);this->setWindowIcon(*qicon);
}

在这里插入图片描述

关于QIcon指针:
在这里插入图片描述

在这里插入图片描述

信号

// QWidget::setContextMenuPolicy(Qt::ContextMenuPolicy policy);
// 窗口的右键菜单策略 contextMenuPolicy() 参数设置为 Qt::CustomContextMenu, 按下鼠标右键发射该信号
[signal] void QWidget::customContextMenuRequested(const QPoint &pos);
// 窗口图标发生变化, 发射此信号
[signal] void QWidget::windowIconChanged(const QIcon &icon);
// 窗口标题发生变化, 发射此信号
[signal] void QWidget::windowTitleChanged(const QString &title);

槽函数

//------------- 窗口显示 -------------
// 关闭当前窗口
[slot] bool QWidget::close();
// 隐藏当前窗口
[slot] void QWidget::hide();
// 显示当前创建以及其子窗口
[slot] void QWidget::show();
// 全屏显示当前窗口, 只对windows有效
[slot] void QWidget::showFullScreen();
// 窗口最大化显示, 只对windows有效
[slot] void QWidget::showMaximized();
// 窗口最小化显示, 只对windows有效
[slot] void QWidget::showMinimized();
// 将窗口回复为最大化/最小化之前的状态, 只对windows有效
[slot] void QWidget::showNormal();//------------- 窗口状态 -------------
// 判断窗口是否可用
bool QWidget::isEnabled() const; // 非槽函数
// 设置窗口是否可用, 不可用窗口无法接收和处理窗口事件
// 参数true->可用, false->不可用
[slot] void QWidget::setEnabled(bool);
// 设置窗口是否可用, 不可用窗口无法接收和处理窗口事件
// 参数true->不可用, false->可用
[slot] void QWidget::setDisabled(bool disable);
// 设置窗口是否可见, 参数为true->可见, false->不可见
[slot] virtual void QWidget::setVisible(bool visible);

例子1

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//窗口尺寸,标题和图标//this->setMaximumSize(500,500);//this->setMinimumSize(100,100);this->setFixedSize(800,800);QString wintitle = "title";this->setWindowTitle(wintitle);QString pic = "E:\\Code\\Qt\\myQWidget\\a.png";QIcon *qicon = new QIcon(pic);this->setWindowIcon(*qicon);//窗口位置信息this->move(20,20);}

在这里插入图片描述

例子3

使用信号和槽机制:参考这种便捷的方式

在这里插入图片描述
在这里插入图片描述
代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QIcon"
#include "QDebug"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//窗口尺寸,标题和图标this->setMaximumSize(1000,1000);this->setMinimumSize(100,100);//this->setFixedSize(800,800);QString wintitle = "title";this->setWindowTitle(wintitle);QString pic = "E:\\Code\\Qt\\myQWidget\\a.png";QIcon *qicon = new QIcon(pic);this->setWindowIcon(*qicon);//窗口位置信息this->move(20,20);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_moveButton_clicked()
{qDebug()<<"点击了一次moveButton控件";//移动窗口QRect rect = this->frameGeometry();//带边框的this->move(rect.topLeft()+QPoint(50,50));//将窗口向右向下移动50,50}void MainWindow::on_getposition_clicked()
{qDebug()<<"点击了一次getposition控件";//获取窗口的位置信息QRect rect = this->frameGeometry();//带边框的qDebug()<<"左上角:"<<rect.topLeft();qDebug()<<"左下角:"<<rect.bottomLeft();qDebug()<<"右上角:"<<rect.topRight();qDebug()<<"左下角:"<<rect.bottomRight();qDebug()<<"宽:"<<rect.width();qDebug()<<"高"<<rect.height();
}void MainWindow::on_modifyposition_clicked()
{qDebug()<<"点击了一次modifyposition控件";int x = 100+rand()%500;int y = 100+rand()%500;int w = this->width()+50;int h = this->height()+50;this->setGeometry(x,y,w,h);
}

例子3

// QWidget::setContextMenuPolicy(Qt::ContextMenuPolicy policy);
// 窗口的右键菜单策略 contextMenuPolicy() 参数设置为 Qt::CustomContextMenu, 按下鼠标右键发射该信号
[signal] void QWidget::customContextMenuRequested(const QPoint &pos);
// 窗口图标发生变化, 发射此信号
[signal] void QWidget::windowIconChanged(const QIcon &icon);
// 窗口标题发生变化, 发射此信号
[signal] void QWidget::windowTitleChanged(const QString &title);

修改标题和图标:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QIcon"
#include "QDebug"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//窗口尺寸,标题和图标this->setMaximumSize(1000,1000);this->setMinimumSize(100,100);//this->setFixedSize(800,800);QString wintitle = "title";this->setWindowTitle(wintitle);QString pic = "E:\\Code\\Qt\\myQWidget\\a.png";QIcon *qicon = new QIcon(pic);this->setWindowIcon(*qicon);//窗口位置信息this->move(20,20);//捕获修改标题的信号connect(this,&MainWindow::windowTitleChanged,this,[=](const QString &title){//之后标题不变化,就不会产生windowTitleChanged这个消息,就不会调用槽函数qDebug()<<"修改了标题,标题为:"<<title;});//捕获修改图标的信号connect(this,&MainWindow::windowIconChanged,this,[=](const QIcon &icon){qDebug()<<"修改了图标,图标为:"<<icon;});}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_moveButton_clicked()
{qDebug()<<"点击了一次moveButton控件";//移动窗口QRect rect = this->frameGeometry();//带边框的this->move(rect.topLeft()+QPoint(50,50));//将窗口向右向下移动50,50}void MainWindow::on_getposition_clicked()
{qDebug()<<"点击了一次getposition控件";//获取窗口的位置信息QRect rect = this->frameGeometry();//带边框的qDebug()<<"左上角:"<<rect.topLeft();qDebug()<<"左下角:"<<rect.bottomLeft();qDebug()<<"右上角:"<<rect.topRight();qDebug()<<"左下角:"<<rect.bottomRight();qDebug()<<"宽:"<<rect.width();qDebug()<<"高"<<rect.height();
}void MainWindow::on_modifyposition_clicked()
{qDebug()<<"点击了一次modifyposition控件";int x = 100+rand()%500;int y = 100+rand()%500;int w = this->width()+50;int h = this->height()+50;this->setGeometry(x,y,w,h);
}void MainWindow::on_modifyicontitle_clicked()
{qDebug()<<"修改标题";QString wintitle = "new_title!!!";this->setWindowTitle(wintitle);   //修改标题后触发信号 void QWidget::windowTitleChanged(const QString &title);}void MainWindow::on_modifyicontitle2_clicked()
{qDebug()<<"修改图标";QString pic = "E:\\Code\\Qt\\myQWidget\\b.png";QIcon *qicon = new QIcon(pic);this->setWindowIcon(*qicon);     //修改图标后触发信号 void QWidget::windowIconChanged(const QIcon &icon);
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
右键生成菜单
在这里插入图片描述
参数为:

在这里插入图片描述

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QIcon"
#include "QDebug"
#include "QMenu"
#include "QCursor"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//窗口尺寸,标题和图标this->setMaximumSize(1000,1000);this->setMinimumSize(100,100);//this->setFixedSize(800,800);QString wintitle = "title";this->setWindowTitle(wintitle);QString pic = "E:\\Code\\Qt\\myQWidget\\a.png";QIcon *qicon = new QIcon(pic);this->setWindowIcon(*qicon);//窗口位置信息this->move(20,20);//捕获修改标题的信号connect(this,&MainWindow::windowTitleChanged,this,[=](const QString &title){//之后标题不变化,就不会产生windowTitleChanged这个消息,就不会调用槽函数qDebug()<<"修改了标题,标题为:"<<title;});//捕获修改图标的信号connect(this,&MainWindow::windowIconChanged,this,[=](const QIcon &icon){qDebug()<<"修改了图标,图标为:"<<icon;});//设置右键生成菜单:   发出信号:QWidget::customContextMenuRequested()this->setContextMenuPolicy(Qt::CustomContextMenu);//捕获信号 QWidget::customContextMenuRequested(),并调用槽函数connect(this,&MainWindow::customContextMenuRequested,this,[=](const QPoint &pos){//pos是基于窗口的局部坐标qDebug()<<"鼠标右击了一下"<<"位置为: "<<pos;QMenu *menu = new QMenu();menu->addAction("复制");menu->addAction("粘贴");menu->addAction("全选");//在pos位置显示(窗口坐标)//menu->exec(pos);//屏幕坐标menu->exec(QCursor::pos());});}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_moveButton_clicked()
{qDebug()<<"点击了一次moveButton控件";//移动窗口QRect rect = this->frameGeometry();//带边框的this->move(rect.topLeft()+QPoint(50,50));//将窗口向右向下移动50,50}void MainWindow::on_getposition_clicked()
{qDebug()<<"点击了一次getposition控件";//获取窗口的位置信息QRect rect = this->frameGeometry();//带边框的qDebug()<<"左上角:"<<rect.topLeft();qDebug()<<"左下角:"<<rect.bottomLeft();qDebug()<<"右上角:"<<rect.topRight();qDebug()<<"左下角:"<<rect.bottomRight();qDebug()<<"宽:"<<rect.width();qDebug()<<"高"<<rect.height();
}void MainWindow::on_modifyposition_clicked()
{qDebug()<<"点击了一次modifyposition控件";int x = 100+rand()%500;int y = 100+rand()%500;int w = this->width()+50;int h = this->height()+50;this->setGeometry(x,y,w,h);
}void MainWindow::on_modifyicontitle_clicked()
{qDebug()<<"修改标题";QString wintitle = "new_title!!!";this->setWindowTitle(wintitle);   //修改标题后触发信号 void QWidget::windowTitleChanged(const QString &title);}void MainWindow::on_modifyicontitle2_clicked()
{qDebug()<<"修改图标";QString pic = "E:\\Code\\Qt\\myQWidget\\b.png";QIcon *qicon = new QIcon(pic);this->setWindowIcon(*qicon);     //修改图标后触发信号 void QWidget::windowIconChanged(const QIcon &icon);
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/15778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统下MySQL读写分离

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、基于Amoeba读写分离 1.基于程序代码内部实现 2.基于中间代理层实现 三、操作步骤 1.在主机Amoeba上安装java环境 2.安装并配置Amoeba 3.配置Amoeba读写分离…

【大数据趋势】7月30日 汇率,恒指期货的大数据趋势概率分析。

1. 数据源头之一 : 汇率变化 从程序模拟趋势来看&#xff0c;美元在持续弱势状态&#xff0c;周线上正在构建一个新的下跌趋势&#xff0c;而且正在反抽过程中&#xff0c;即将完成&#xff0c;如果没有外部干预&#xff0c;会顺势往下。从月线来看&#xff0c;高点逐步降低&a…

没有 telnet 不能测试端口?容器化部署最佳的端口测试方式

写在前面 生产中遇到&#xff0c;整理笔记在容器中没有 telnet &#xff0c;如何测试远程端口理解不足小伙伴帮忙指正 他的一生告诉我们&#xff0c;不能自爱就不能爱人&#xff0c;憎恨自己也必憎恨他人&#xff0c;最后也会像可恶的自私一样&#xff0c;使人变得极度孤独和悲…

线性代数的学习和整理2:线性代数的基础知识(整理ing)

目录 0 写在前面的话 网上推荐的线性代数的课程 1 线性代数和矩阵的各种概念 1.1 各种逻辑图 2 关于线性代数入门的各种灵魂发问 2.1 什么是线性&#xff0c;什么是线性相关 &#xff1f; 为什么叫线性变换&#xff1f; 为什么叫线性代数&#xff1f; 2.2 线性代数是人造…

【Linux】进程篇(补):简易 shell 的实现(进程深刻理解、内建命令的使用)

文章目录 makefilemybash.c 代码逻辑框架&#xff08;重要的是&#xff0c;边写边查&#xff01;&#xff09; 命令行提示符&#xff0c;fflush 刷新显示获取 输入的 有效字符串&#xff0c;定义一个字符数组&#xff0c;用 fgets 从键盘上获取&#xff08;注意处理命令行输入…

【疑难杂症专辑】【jlink 关闭了调试接口/进入休眠/停机不可下载】

做开发调试器的正常使用是基础&#xff0c;但有时候会人为造成一些问题。如下场景&#xff1a; 使用四线SW接口&#xff0c;进入低功耗停机模式后不能下载 先点下载&#xff0c;等keil在查找设备时短接复位然后断开把单片机唤醒&#xff0c;看自己的唤醒条件是什么&#xff0c…

Spark性能调优指南来了!

1、什么是Spark Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 Spark Core&#xff1a;实现了Spark的基本功能&#xff0c;包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed Dat…

安科瑞智慧空开微型断路器在银行的应用-安科瑞黄安南

应用场景 智能微型断路器与智能网关组合应用于末端回路 功能 1.计量功能&#xff1a;实时上报电压、电流、功率、电能、漏电、温度、频率等电参量&#xff1b; 2.报警功能&#xff1a;过压报警、欠压报警、过流报警、过载报警、漏电报警、超温报警、三相电缺相报警&#xff…

论文笔记:Adjusting for Autocorrelated Errors in Neural Networks for Time Series

2021 NIPS 原来的时间序列预测任务是根据预测论文提出用一阶自回归误差预测 一阶差分&#xff0c;类似于ResNet的残差思路&#xff1f;记为pred&#xff0c;最终的预测结果

【蓝桥杯备考资料】如何进入国赛?

目录 写在前面注意事项数组、字符串处理BigInteger日期问题DFS 2013年真题Java B组世纪末的星期马虎的算式振兴中华黄金连分数有理数类&#xff08;填空题&#xff09;三部排序&#xff08;填空题&#xff09;错误票据幸运数字带分数连号区间数 2014年真题蓝桥杯Java B组03猜字…

维护电脑,让“战友”保持长寿命

目录 维护电脑&#xff0c;让“战友”保持长寿命介绍你的电脑介绍一下你的日常维护措施给出一些你觉得有用的维护技巧不推荐做些什么其他补充总结 无论是学习还是工作&#xff0c;电脑都是IT人必不可少的重要武器&#xff0c;一台好电脑除了自身配置要经得起考验&#xff0c;后…

1.0 python环境安装

1 python环境安装 python安装教程原文 2 PyCharm安装教程 PyCharm安装教程

异常的使用

异常 异常的概念 指的是程序在执行的过程中&#xff0c;出现的非正常的情况&#xff0c;最后会导致JVM的非正常停止。在java等面向对象的语言当中&#xff0c;异常本身是一个类&#xff0c;产生异常就是创建异常对象并且抛出一个异常对象。java处理异常的方式就是中断处理。异常…

Linux内核的I2C驱动框架详解------这应该是我目前600多篇博客中耗时最长的一篇博客

目录 1 I2C驱动整体框架图 2 I2C控制器 2.1 I2C控制器设备--I2C控制器在内核中也被看做一个设备 2.2 i2c控制器驱动程序 2.3 platform_driver结构体中的probe函数做了什么 2.3.1 疑问&#xff1a; i2cdev_notifier_call函数哪里来的 2.3.2 疑问&#xff1a;为什么有两…

Python爬虫-快手photoId

前言 本文是该专栏的第49篇,后面会持续分享python爬虫干货知识,记得关注。 笔者在本专栏的上一篇,有详细介绍平台视频播放量的爬取方法。与该平台相关联的文章,笔者已整理在下方,感兴趣的同学可查看翻阅。 1. Python如何解决“快手滑块验证码”(4) 2. 快手pcursor 3. …

2023 ISSE观察:智能遮阳窗帘行业蓬勃发展,AI设计引热议

7月31日&#xff0c;上海国际智能遮阳与建筑节能展览会落下帷幕。作为智能遮阳的行业展会&#xff0c;展会三天&#xff0c;现场热闹非凡&#xff0c;参展商和观展者络绎不绝。 作为一大行业盛事&#xff0c;2023 ISSE展会方打造了五大展区&#xff0c;除了提供系统门窗装修方案…

javascript学习

一、数据类型 所有的变量都以var定义 数值 js不区分小数和整数 文本图形音频视频数组 var id_arr [1,2,3,4,5]对象 // 定义对象 var person {name: zhangsan,age: 3,tags: [java,js,php]} // 取对象的值 var person_name person.name

二、SQL-6.DCL-1).用户管理

一、DCL介绍 Data Control Language 数据控制语言 用来管理数据库 用户、控制数据库的 访问权限。 二、语法 1、管理用户 管理用户在系统数据库mysql中的user表中创建、删除一个用户&#xff0c;需要Host&#xff08;主机名&#xff09;和User&#xff08;用户名&#xff0…

openGauss学习笔记-26 openGauss 高级数据管理-约束

文章目录 openGauss学习笔记-26 openGauss 高级数据管理-约束26.1 NOT NULL约束26.2 UNIQUE约束26.3 PRIMARY KEY26.4 FOREIGN KEY26.5 CHECK约束 openGauss学习笔记-26 openGauss 高级数据管理-约束 约束子句用于声明约束&#xff0c;新行或者更新的行必须满足这些约束才能成…

基于SHARC+®单核的ADSP-21567KBCZ6、ADSP-21566BBCZ4、ADSP-21566KBCZ4高性能DSP处理器产品

ADSP-2156x 处理器的速度高达 1 GHz&#xff0c;属于 SHARC 系列产品。ADSP-2156x 处理器基于 SHARC 单核。ADSP-2156x SHARC 处理器是 SIMD SHARC 系列数字信号处理器 (DSP) 中的一款产品&#xff0c;采用 ADI 的超级哈佛架构。这些 32 位/40 位/64 位浮点处理器已针对高性能音…