当前位置: 首页 > news >正文

【Qt】顶层窗口和普通窗口区别以及用法

区别

在Qt项目开发中,经常会用到窗体控件用于显示及数据操作和其他交互等。
但,窗体分为顶层窗口(Top-level Window)和普通窗口(Regular Window)。
他们之间是有区别的,包括在项目实际中的用法等。
在使用Qt进行窗口编程时,了解和理解顶层窗口和普通窗口的区别是很重要的,因为它们的创建、管理和行为可能会有所不同。这样可以确保窗口的正确显示和交互。
下面是它们之间的主要区别:

  1. 样式

顶层窗口通常是应用程序的主窗口,例如主窗口、对话框或主要的独立窗口。它们有特定的样式和布局,可能包含菜单栏、工具栏、状态栏等。
而普通窗口是应用程序中的其他窗口,通常用于显示特定的内容,如子窗口、自定义对话框等。

  1. 窗口管理

顶层窗口拥有独立的任务栏图标,并且可以有额外的窗口管理功能,例如最大化、最小化、关闭按钮等。
普通窗口通常依赖于父窗口的管理,没有自己的任务栏图标。

  1. 关系

顶层窗口可以是应用程序的根窗口,其他窗口可以作为其子窗口或对话框进行管理。
普通窗口通常是依附于某个父窗口或者作为顶层窗口的非模态对话框。

  1. 窗口属性

顶层窗口拥有一些特殊的窗口属性,例如Qt::WindowFlags中的Qt::Window和Qt::Dialog属性。这些属性控制了窗口的行为和外观。
普通窗口通常默认拥有Qt::Widget属性。

此外,还可以设置窗口的类型:

Qt窗口类型

Qt 窗口标志枚举类型用于指定小部件的各种窗口系统属性。其中一些标志取决于底层窗口管理器是否支持它们。以下是窗口类型作用一览表:

窗口类型描述
Qt::QWidget这是 QWidget 的默认类型。如果它们有父级,这种类型的部件是子部件,如果没有父控件,则为独立窗口。
Qt::Window通常具有窗口系统框架和标题栏。请注意,如果部件没有父控件,则无法取消设置此标记(可以用在弹出子窗口比父窗口大很多的情况下)。
Qt::Dialog对话框(通常标题栏中没有最大化或最小化按钮)。dget这是 QDialog 的默认类型。如果要将其用作模态对话框,则应从另一个窗口启动它。
Qt::SheetmacOS 表单式窗口。由于使用工作表意味着窗口模态,推荐的方法是使用QWidget :: setWindowModality()或QDialog :: open()。
Qt::DrawermacOS 抽屉式窗口。
Qt::Popup弹出式顶层窗口,即它是模态的,但具有适合弹出菜单的窗口系统框架。
Qt::Tool工具窗口。工具窗口通常是一个小窗口,其标题栏和装饰比通常小,通常用于工具按钮的集合。 如果有父部件,则工具窗口将始终保持在其上。
Qt::Tooltip工具提示窗口。 这在内部用于实现工具提示,没有标题栏和窗口边框。
Qt::SplashScreen闪屏。 这是 QSplashScreen 的默认类型。
Qt::SubWindow子窗口,例如 QMdiSubWindow 窗口小部件。
Qt::ForeignWindow表示由另一个进程创建的本机平台窗口或手动使用本机代码的句柄。
Qt::CoverWindow代表一个封面窗口,例如,当应用程序在 BlackBerry 平台上最小化时显示。

比如:

QWidget* pW = new QWidget();
pW->setWindowFlags(Qt::Dialog);

窗口还可以设置为无边框或者置顶。

窗口标志

以下为可以设置多个的窗口标志对照表:

窗口标志描述
Qt::MSWindowsFixedSizeDialogHint Windows系统固定大小窄边框窗口
Qt::X11BypassWindowManagerHint无窗口边框的窗口,完全忽视窗口管理器和用户无法使用键盘进行
Qt::FramelessWindowHint无法移动和改变大小的无窗口边框的窗口
Qt::NoDropShadowWindowHint禁用窗口阴影
Qt::WindowTitleHint带标题栏的窗口
Qt::WindowSystemMenuHint带系统菜单和尽可能地添加一个关闭按钮的窗口
Qt::CustomizeWindowHint关闭默认窗口标题提示栏
Qt::WindowMinimizeButtonHint窗口添加一个最小化按钮
Qt::WindowMaximizeButtonHint窗口添加一个最大化按钮
Qt::WindowCloseButtonHint窗口添加一个关闭按钮
Qt::WindowContextHelpButtonHint窗口添加一个帮助按钮
Qt::WindowShadeButtonHint如果窗口管理器支持,则在最小化按钮的位置添加一个阴影按钮
Qt::WindowStaysOnTopHint通知窗口系统置顶窗口
Qt::WindowStaysOnBottomHint通知窗口系统置于最底层窗口

示例

// 设置无窗口边框 | 窗口置顶 
this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);

Qt 开始界面有一个 示例教程:Window Flags,展示了使用 Qt 中可用的窗口标志类型来指定窗口系统属性。
在QtCreator示例,搜索可以找到:
在这里插入图片描述
窗口除了可以设置标志外,还可以设置属性。

窗口属性

通过 setAttribute 函数可以对 QWidget 对象设置 Qt::WidgetAttribute 枚举属性,从而改变 QWidget 对象的某些特性。

窗口属性描述
Qt::WA_AcceptDrops接受拖放,QWidget::setAcceptDrops()是此设置的便捷函数。
Qt::WA_DeleteOnCloseQWidget 关闭时被 delete。
Qt::WA_Disabled设置小部件(注意是小部件,对窗口无效)被禁用(相对于调用setEnabled(false);)。
Qt::WA_ForceUpdatesDisabled禁用更新,即使其所有祖先都设置为启用更新状态,它仍将保持禁用状态。(相当于调用QWidget::setUpdatesEnabled())。
Qt::WA_Hover当鼠标进入或离开小部件时,强制 Qt 生成绘制事件。此功能通常在实现自定义样式时使用。
Qt::WA_InputMethodEnabled启用亚洲语言的输入法。创建自定义文本编辑小部件时必须设置。
Qt::WA_KeyboardFocusChange当用户使用键盘(tab、backtab 或快捷键)时更改焦点。用于顶层窗口设置。
Qt::WA_NoChildEventsForParent小部件不希望将 ChildAdded 或 ChildRemoved 事件发送到其父级。
Qt::WA_NoChildEventsFromChildren小部件不希望接收从其子部件发送的 ChildAdded 或 ChildRemoved 事件。
Qt::WA_NoMousePropagation禁止将鼠标事件传播到小部件的父级。默认情况下禁用此属性。
Qt::WA_TransparentForMouseEvents将禁用向小部件及其子部件传递鼠标事件。默认情况下禁用此属性。
Qt::WA_NoSystemBackground小部件没有背景,即当小部件接收到绘制事件时,背景不会自动重新绘制。窗口设置这个效果就是全黑。
Qt::WA_OpaquePaintEvent小部件在接收到绘制事件时绘制其所有像素。因此,在生成绘制事件之前,不需要更新、调整大小、滚动和焦点更改等操作来擦除小部件。
Qt::WA_PaintUnclipped使在此小部件上操作的所有 QPainter 对象的绘制都不裁剪(即 QPainter 设置裁剪区域无效)。只有设置了Qt::WA_PaintOnScreen标志的小部件才支持此标志。
Qt::WA_PaintOnScreen表示小部件要直接在屏幕上绘制。具有此属性集的小部件不参与组合管理,即它们不能是半透明的或通过半透明重叠小部件发光。它将禁用双缓冲。
Qt::WA_QuitOnClose小部件作为最后一个接受closeEvent()时,使 Qt 退出应用程序。可以使用QApplication::quitOnLastWindowClosed属性修改此行为。默认情况下,该属性为 Qt::Window 类型的所有小部件设置。
Qt::WA_Resized指示小部件具有明确的大小。该标志由QWidget::resize()和QWidget::setGeometry()设置或清除。
Qt::WA_AlwaysShowToolTips设置窗口(注意是窗口,当 QWidget 作为子部件时无效)为非活动时也显示提示信息。(setToolTip()设置了窗口提示信息)

下面重点介绍几个常用或特殊的属性:

Qt::WA_TransparentForMouseEvents

Qt 官方对Qt::WA_TransparentForMouseEvents的解释如下:

When enabled, this attribute disables the delivery of mouse events to the widget and its children. Mouse events are delivered to other widgets as if the widget and its children were not present in the widget hierarchy; mouse clicks and other events effectively “pass through” them. This attribute is disabled by default.
翻译是:
当该属性被激活启用时,将会使所有发送到窗体和窗体内部子控件的鼠标事件无效。鼠标事件被分发到其它的窗体部件,就像本窗体部件及本窗体内的子控件没有出现在窗体层次体系中。鼠标单击和鼠标其它事件高效地穿过(即绕开)本窗体部件及其内的子控件,这个属性默认是禁用未开启的。

Qt::WA_StaticContents

Qt 官方对Qt::WA_StaticContents解释如下:

Indicates that the widget contents are north-west aligned and static. On resize, such a widget will receive paint events only for parts of itself that are newly visible. This flag is set or cleared by the widget’s author.
翻译是:
指示窗体内容靠西北方向即左上角对齐且是静态的。当窗体大小调整时,仅仅只有那些新露出来的可见窗体部分才会绘制。这个标识由窗体的开发者清除或设置。

通常情况下,当重新定义一个窗口部件大小时,Qt 会为窗口部件的整个可见区域生成一个绘制事件。但是如果该窗口部件在创建时使用了 Qt::WA_StaticContens 属性,那么绘制事件的区域就会被严格限定在之前没有被显示最近刚露出的部分上。这也就意味着,如果重新把窗口部件改变为比原来还要小的尺寸,那么就根本不会产生任何绘制事件。这在某些情况下,可以提到性能,降低 cpu 效率,当以前绘制的东西很费时间时(如:某个曲线、某个图形是经过某个复杂的数学运算得出的),不重绘、不重新计算,这将节约很多 cpu 时间,大大提高效率。

Qt::WA_OpaquePaintEvent

Qt 官方对Qt::WA_OpaquePaintEvent解释如下:

Indicates that the widget paints all its pixels when it receives a paint event. Thus, it is not required for operations like updating, resizing, scrolling and focus changes to erase the widget before generating paint events. The use of WA_OpaquePaintEvent provides a small optimization by helping to reduce flicker on systems that do not support double buffering and avoiding computational cycles necessary to erase the background prior to painting. Note: Unlike WA_NoSystemBackground, WA_OpaquePaintEvent makes an effort to avoid transparent window backgrounds. This flag is set or cleared by the widget’s author.
翻译是:
指示窗体在收到绘制事件时,绘制它的所有像素。因此,在收到绘制事件之前,对于更新、大小调整、滚动条滚动、焦点更变等操作时,并不要求窗体擦除窗体背景。使用该标志对那些不支持双缓冲区的系统提供了小小的优化,从而减小闪烁;同时避免在绘制之前因擦除背景需要计算而耗费时间。不同于 WA_NoSystemBackground 标志,WA_OpaquePaintEvent 尽量避免窗体背景透明,这个标志是由窗体的开发者设置或清除。

注:有时候设置 WA_OpaquePaintEvent 属性,会影响用样式表设置窗口的背景颜色。

以上是 Qt 官方的解释。

翻译过来就是:
指示窗体在收到绘制事件时,绘制它的所有像素。这里“收到绘制事件”应该是第一次收到绘制事件时,也即窗体构建时,就把窗体所有的像素绘制一遍。
窗体一旦在完成,上面说的绘制完一遍所有像素后,此后所有有关窗体的更新、大小改变,焦点改变、滚动条滚动等操作都不会擦除窗体背景。也就是说以前画的东西都不会擦除重绘。也就是以前画的不重新计算、不重新绘制。当以前绘制的东西很费时间时(如:某个曲线、某个图形是经过某个复杂的数学运算得出的),不重绘、不重新计算,这将节约很多 cpu 时间大大提高效率(这也就是设置本标志后,不闪烁的原因吧)。

Qt::WA_NoMousePropagation

在 Qt 中,鼠标事件包含:鼠标按键按下,鼠标按键释放,鼠标双击事件,鼠标移动事件。分别由下面的 event handler(事件处理器,实际上就是一些可override的函数)来处理:

// 鼠标点击事件
virtual void mousePressEvent(QMouseEvent *event);
// 鼠标离开事件
virtual void mouseReleaseEvent(QMouseEvent *event);
// 鼠标双击事件
virtual void mouseDoubleClickEvent(QMouseEvent *event);
// 鼠标移动事件
virtual void mouseMoveEvent(QMouseEvent *event);

鼠标事件属于冒泡事件,鼠标事件会一直随着其父对象一直路由下去,直到有其祖先所在的 widget 接受它,或者有事件过滤器消耗它。

注意:如果鼠标事件被路由到包含Qt:: WA_NoMousePropagation窗口属性(即该属性设置为 true)的窗口小部件,该鼠标事件不会进一步沿着父控件链路由。

相关文章:

【Qt】顶层窗口和普通窗口区别以及用法

区别 在Qt项目开发中,经常会用到窗体控件用于显示及数据操作和其他交互等。 但,窗体分为顶层窗口(Top-level Window)和普通窗口(Regular Window)。 他们之间是有区别的,包括在项目实际中的用法…...

qt开发从入门到实战2

以下是本人学习笔记 原视频:最新QT从入门到实战完整版|传智教育 qt开发从入门到实战1 练习示例 设计一个按钮,点击时弹出新窗口,再次点击时新窗口关闭 // exerciseQWidget* second_window new QWidget();QPushButton* btn3 new QPushBu…...

Android---字节码层面分析Class类文件

Java 提供了一种可以在所有平台上都能使用的一种中间代码---字节码文件(.class文件)。有了字节码,无论是那个平台只要安装了虚拟机都可以直接运行字节码文件。有了虚拟机,解除了 java 虚拟机与 java 代码之间的耦合。 Java 虚拟机当初被设计出来时就不单…...

【2023研电赛】东北赛区一等奖作品:基于FPGA的小型水下无线光通信端机设计

本文为2023年第十八届中国研究生电子设计竞赛东北赛区一等奖作品分享,参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领!,分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领&a…...

JWT授权为啥要在 Authorization标头里加个Bearer 呢

这是因为 W3C 的 HTTP 1.0 规范&#xff0c;Authorization 的格式是&#xff1a; Authorization: <type> <authorization-parameters> w3c规定&#xff0c;请求头Authorization用于验证用户身份。这就是告诉我们&#xff0c;token应该写在请求头Authorization中 …...

一篇理解TCP协议

一、TCP协议概念。 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的传输层协议。它主要用于在计算机网络中&#xff0c;通过建立可靠的通信连接来进行数据传输。 TCP协议的特点如下&#xff1a; 可靠性&#xf…...

rk平台android12系统设置里面互联网选项中的以太网选项点击不了问题

rk平台android12系统中,系统设置中的互联网选项,当连接以太网以后,会显示以太网的选项,但是点击没作用,现在需要点击能够进入到以太网的设置界面,需要添加相关的点击事件。 首先,在packages/apps/Settings/AndroidManifest.xml中的以太网设置配置添加一个action,用于打…...

ctrl+d和ctrl+c的区别

CtrlD和CtrlC都是常用的键盘快捷键&#xff0c;但它们的功能不同。 CtrlD 在不同的操作系统和应用程序中可以有不同的功能。在Unix/Linux系统的命令行终端中&#xff0c;CtrlD的作用是发送EOF&#xff08;End of File&#xff09;信号&#xff0c;表示输入结束。在Windows系统中…...

ChatGLM2-6B微调实践

ChatGLM2-6B微调实践 环境准备安装部署1、安装 Anaconda2、安装CUDA3、安装PyTorch4、安装 ChatGLM2-6B 微调实践1、准备数据集2、安装python依赖3、微调并训练新模型4、微调后模型的推理与评估5、验证与使用微调后的模型 微调过程中遇到的问题 环境准备 申请阿里云GPU服务器&…...

YOLOv7独家改进FPN系列:结合新颖的 GhostSlimPAN 范式网络结构,进一步提升检测器性能

💡本篇内容:YOLOv7改进FPN系列:结合新颖的 GhostSlimFPN 范式网络结构,进一步提升检测器性能 重点:🔥🔥🔥YOLOv7 使用这个 核心创新点 在数据集改进做实验:即插即用: 当 Slim 遇到 YOLO 系列 💡🚀🚀🚀本博客 YOLO系列 + 改进源代码改进 适用于 YOLOv7…...

12. Java异常及异常处理处理

Java —— 异常及处理 1. 异常2. 异常体系3. 常见Exception4. 异常处理4.1 try finally catch关键字4.2 throws和throw 自定义异常4.3 finally&#xff0c;final&#xff0c;finalize三者的区别 1. 异常 异常&#xff1a;在程序执行过程中发生的意外状况&#xff0c;可能导致程…...

自定义hooks函数

体会1 1、js文件中定义useXX函数 export function usetestY() {const count ref(10);const doubleCount computed(() > count.value * 2);return {count,doubleCount,}; } 2、在vue文件中使用useXX函数 import { usetestY } from ./data;const { count, doubleCount } …...

Linux系统及Docker安装RabbitMq

目录 一、linux系统安装 1、上传文件 2、在线安装依赖环境 3、安装Erlang 4、安装RabbitMQ 5、开启管理界面及配置 6、启动 7、删除mq 二、docker安装 1、上传mq.tar包或使用命令拉取镜像 2、启动并运行 3、访问mq 一、linux系统安装 1、上传文件 2、在线安装依赖环…...

山东省赛二阶段第一部分解题思路

提交攻击者的IP地址 192.168.1.7 这个直接awk过滤一下ip次数&#xff0c;这个ip多得离谱&#xff0c;在日志里面也发现了它的恶意行为&#xff0c;后门&#xff0c;反弹shell 识别攻击者使用的操作系统 Linux 找出攻击者资产收集所使用的平台 shodan 提交攻击者目…...

WebGoat 靶场 JWT tokens 四 五 七关通关教程

文章目录 webGoat靶场第 四 关 修改投票数第五关第七关 你购买书&#xff0c;让Tom用户付钱 webGoat靶场 越权漏洞 将webgoat-server-8.1.0.jar复制到kali虚拟机中 sudo java -jar webgoat-server-8.1.0.jar --server.port8888解释&#xff1a; java&#xff1a;这是用于执行…...

【单元测试】如何使用 JUnit5 框架?

JUnit5 单元测试框架使用教程 一、Junit5 是什么&#xff1f; Junit5是一个用于在Java平台上进行单元测试的框架。JUnit 5 框架主要由三部分组成&#xff1a;JUnit Platform、JUnit Jupiter 和 JUnit Vintage。 JUnit Platform&#xff1a;定义了测试引擎的 API&#xff0c;是…...

C#封装、继承和多态的用法详解

大家好&#xff0c;今天我们将来详细探讨一下C#中封装、继承和多态的用法。作为C#的三大面向对象的特性&#xff0c;这些概念对于程序员来说非常重要&#xff0c;因此我们将对每个特性进行详细的说明&#xff0c;并提供相应的示例代码。 目录 1. 封装&#xff08;Encapsulati…...

数据结构与算法(持续更新)

线性表 单链表 单链表的定义 由于顺序表的插入删除操作需要移动大量的元素&#xff0c;影响了运行效率&#xff0c;因此引入了线性表的链式存储——单链表。单链表通过一组任意的存储单元来存储线性表中的数据元素&#xff0c;不需要使用地址连续的存储单元&#xff0c;因此它…...

HDLbits: ece241 2014 q4

module top_module (input clk,input x,output z ); reg [2:0] Q;always(posedge clk)beginQ[0] < Q[0] ^ x;Q[1] < (~Q[1]) & x;Q[2] < (~Q[2]) | x;z < ~(| Q[2:0]); //错误&#xff01;&#xff01;&#xff01;&#xff01;endendmodule 正确答案&#xf…...

LuatOS-SOC接口文档(air780E)-- gmssl - 国密算法

sm.sm2encrypt(pkx,pky,data)# sm2算法加密 参数 传入值类型 解释 string 公钥x,必选 string 公钥y,必选 string 待计算的数据,必选,最长255字节 返回值 返回值类型 解释 string 加密后的字符串, 原样输出,未经HEX转换 例子 local originStr "encryptio…...

【线性代数及其应用 —— 第一章 线性代数中的线性方程组】-1.线性方程组

所有笔记请看&#xff1a; 博客学习目录_Howe_xixi的博客-CSDN博客https://blog.csdn.net/weixin_44362628/article/details/126020573?spm1001.2014.3001.5502思维导图如下&#xff1a; 内容笔记如下&#xff1a;...

vue实现拖拽排序

在业务中列表拖拽排序是比较常见的需求&#xff0c;常见的JS拖拽库有Sortable.js&#xff0c;Vue.Draggable等&#xff0c;大多数同学遇到这种需求也是更多的求助于这些JS库&#xff0c;其实&#xff0c;使用HTML原生的拖放事件来实现拖拽排序并不复杂&#xff0c;结合Vue的tra…...

IS-IS

二、IS-IS中的DIS与OSPF中的DR Level-1和Level-2的DIS是分别选举的&#xff0c;用户可以为不同级别的DIS选举设置不同的优先级。DIS的选举规则如下&#xff1a;DIS优先级数值最大的被选为DIS。如果优先级数值最大的路由器有多台&#xff0c;则其中MAC地址最大的路由器会成为DI…...

【MySQL】为什么使用B+树做索引

MySQL的innoDB引擎使用的是B树的结构来存储索引的&#xff0c;那么为什么会使用B树呢&#xff1f;为什么不使用其他的结构?本篇我们深入MySQL底层来了解B树。本文中说到的MySQL都是InnoDB引擎的 在这之前&#xff0c;先了解一下InnoDB是如何存储数据的 MySQL是根据数据页的方式…...

php 安装mongodb扩展模块,rdkafka模块

mongodb mongodb扩展下载 选择php版本&#xff0c;根据报错提示&#xff0c;选择扩展对应的版本选择非安全进程将php_mongodb.dll放到php/ext目录下修改php.ini配置&#xff0c;添加extensionphp_mongodb.dll开启php_mongodb扩展&#xff0c;重启服务php -m 查看是否开启成功…...

【数据结构】初探时间与空间复杂度:算法评估与优化的基础

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;数据结构 &#x1f525;该文章主要了解算法的时间复杂度与空间复杂度等相关知识。 目录&#xff1a; &#x1f30f; 时间复杂度&#x1f52d…...

SpringCloud Alibaba - Sentinel 限流规则(案例 + JMeter 测试分析)

目录 一、Sentinel 限流规则 1.1、簇点链路 1.2、流控模式 1.2.1、直接流控模式 1.2.2、关联流控模式 a&#xff09;在 OrderController 中新建两个端点. b&#xff09;在 Sentinel 控制台中对订单查询端点进行流控 c&#xff09;使用 JMeter 进行测试 d&#xff09;分…...

uniapp 条件编译 APP 、 H5 、 小程序

一、#ifdef、#ifndef、 #endif三者的区别、 标识作用#ifdef仅在某个平台上使用#ifndef在除了这个平台的其他平台上使用(非此平台使用&#xff09;#endif结束条件编译 二、平台标识 标识平台APP-PLUS5AppMP微信小程序/支付宝小程序/百度小程序/头条小程序/QQ小程序MP-WEIXIN微…...

深度学习——权重衰减(weight_decay)

深度学习——权重衰减&#xff08;weight_decay) 文章目录 前言一、权重衰减1.1. 范数与权重衰减1.2. 高维线性回归1.3. 从零开始实现1.3.1.初始化模型参数1.3.2. 定义L₂范数惩罚1.3.3. 定义训练代码实现1.3.4. 不管正则化直接训练1.3.5. 使用权重衰减 1.4. 简洁实现 总结 前言…...

nignx如何部署让前端不用清缓存就可以部署

在Nginx中&#xff0c;可以使用以下方法来部署前端应用程序&#xff0c;使前端用户无需清空缓存即可进行部署&#xff1a; 1、使用版本号&#xff1a;在前端应用程序的构建过程中&#xff0c;可以添加一个独特的版本号到应用程序的名称中。每次部署时&#xff0c;将版本号更新…...

如何用普通电脑做网站服务器/关键词歌曲歌词

让城市变成生态公园—新型生态别墅设计 梦想家园-生态小屋 前言&#xff1a;上海世博会的主题是“城市让生活更美好”&#xff0c;是的&#xff0c;城市的确可以让生活更美好&#xff0c;关键是我们要去建设美好的城市。我觉得城市可以变得更美好。城市应该是一个巨大的生态公园…...

成都最好的网站建设/广州营销seo

前段时间做了一个开发&#xff0c;涉及到网络编程&#xff0c;开发过程比较顺利&#xff0c;但任务完成后始终觉得有一些疑惑。主要是因为对网络协议不太熟悉&#xff0c;对一些概念也没弄清楚。后来我花了一些时间去了解这些网络协议&#xff0c;现在对TCP/IP网络协议有了初步…...

网站建设公司业务/网络营销实训总结报告

Java如何入门&#xff1f; 1、建立好开发环境 首先建立好开发环境非常重要&#xff0c;工欲善其事&#xff0c;必先利其器。做任何开发&#xff0c;首先就是要把这个环境准备好&#xff0c;之后就可以去做各种尝试&#xff0c;尝试过程中就能逐渐建立信心。初学者往往在环境配…...

工信部查网站备案/app下载推广

取(m堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1263 Accepted Submission(s): 754 Problem Descriptionm 堆石子,两人轮流取.只能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出…...

网站作风建设年专栏/千锋教育出来好找工作吗

纠结两天&#xff08;浏览器中唤起本地APP&#xff09;&#xff0c;一直找不到解决方案&#xff0c;今天总算基本搞定。 ps&#xff1a;吐槽一下 魔窗那篇文章&#xff0c;为什么就不直接把js代码开源开源&#xff0c;混淆后的代码看得我好恼火 参考文章&#xff1a;魔窗解决方…...

有没有男女做那个的网站/360优化大师官方版

一、定义门面模式&#xff08;FacadePattern&#xff09;也叫做 外观模式&#xff0c;是一种比较常用的封装模式&#xff0c;其定义如下&#xff1a;要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口&#xff0c;使得子系统更易于…...