【嵌入式——QT】多窗体应用程序设计

主要窗体类及其用途

常用的窗体基类是QWidget、QDialog、QMainWindow,在创建GUI应用程序时选择窗体基类就是从这3个类中选择,QWidget直接继承于QObject,是QDialog和QMainWindow的父类,其他继承于QWidget的窗体类还有QSplashScreen、QMdiSubWindow和QDesktopWidget,另外还有一个类QWindow,它同时从QObject和QSurface继承。

  • QWidget:在没有指定父容器时可作为独立的窗口,指定父容器后可以作为容器的内部组件;
  • QDialog:用于设计对话框,以独立窗口显示;
  • QMainWindow:用于设计带有菜单栏、工具栏、状态来的主窗口,一般以独立窗口显示;
  • QSplashScreen:用作应用程序启动时的splash窗口,没有边框;
  • QMdiSubWindow:用于QMdiArea提供一个子窗体,用于DMI应用程序设计;
  • QDesktopWidget:具有多个显卡和多个显示器你的系统具有多个桌面,这个类提供用户桌面信息,如屏幕个数,每个屏幕的大小等;
  • QWindow:通过底层的窗口系统表示一个窗口的类,一般作为一个父容器的嵌入式窗体,不作为独立窗体;

QWidget主要函数

setAttribute

定义窗体的属性。
Qt::WidgetAttribute

  • Qt::WA_AcceptDrops:允许窗体接收拖放来的组件;
  • Qt::WA_DeleteOnClose:窗体关闭时删除自己,释放内存;
  • Qt::WA_Hover:鼠标进入或移出窗体时产生paint事件;
  • Qt::WA_AcceptTouchEvents:窗体是否接受触屏事件;

setWindowFlags

设置窗体标记。

void setWindowFlags(Qt::WindowFlags type)

Qt::WindowFlags

  • Qt::Widget:这是QWidget的默认类型。如果有父部件,则这种类型的部件为子部件;如果没有父部件,则为独立窗口;
  • Qt::Window:表示小部件是一个窗口,通常带有窗口系统框架和标题栏,而不管小部件是否有父窗口。请注意,如果小部件没有父组件,则不可能取消此标志的设置;
  • Qt::Dialog:表示部件是一个窗口,应该装饰成对话框;
  • Qt::Sheet:表示该窗口在macOS上是一个工作表;
  • Qt::Drawer:表示widget是macOS上的一个抽屉;
  • Qt::Popup:表示部件是一个弹出式顶层窗口,即它是模态的,但具有适合弹出式菜单的窗口系统框架;
  • Qt::Tool:表示widget是一个工具窗口;
  • Qt::ToolTip:表示部件是工具提示。这在内部用于实现工具提示;
  • Qt::SplashScreen:表示该窗口为启动画面。这是QSplashScreen的默认类型;
  • Qt::Desktop:表示这个小部件是桌面。这是QDesktopWidget的类型;
  • Qt::SubWindow:表示此部件是子窗口,如QMdiSubWindow部件。;
  • Qt::ForeignWindow:指示此窗口对象是表示由另一个进程或手动使用本机代码创建的本机平台窗口的句柄;
  • Qt::CoverWindow:表示该窗口表示覆盖窗口,该窗口在某些平台上应用程序最小化时显示;

setWindowState

使窗口处于最小化、最大化等状态。

void QWidget::setWindowState(Qt::WindowStates windowState)

Qt::WindowStates

  • Qt::WindowNoState:正常状态;
  • Qt::WindowMinimized:窗口最小化;
  • Qt::WindowMaximized:窗口最大化;
  • Qt::WindowFullScreen:窗口填充整个屏幕;
  • Qt::WindowActive:变为活动窗口;

setWindowModality

设置窗口的模态,只对窗口类型有用。

void setWindowModality(Qt::WindowModality windowModality)

Qt::WindowModality

  • Qt::NonModal:无状态,不会阻止其他窗口的输入;
  • Qt::WindowModal:窗口对于其父窗口。所有的上级父窗口都是模态的;
  • Qt::ApplicationModal:窗口对整个应用程序是模态的,阻止所有窗口的输入;

setWindowOpacity

设置窗口透明度。参数level是1.0(完全不透明)至0.0(完全透明)之间的数,窗口透明度缺省值是1.0。

void setWindowOpacity(qreal level)
  • 32
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: QT是一款跨平台的GUI开发框架,可以用于开发各种类型的应用程序。远程控制桌面是指通过网络控制另一台计算机上的桌面操作,这在很多情况下非常有用,比如远程技术支持、远程培训等。 在QT中实现远程控制桌面通常需要以下几个步骤: 1. 建立网络连接:使用QT的网络库,可以建立与另一台计算机的网络连接。可以使用TCP或者UDP协议进行通信。一台计算机作为服务器,另一台计算机作为客户端。 2. 捕获远程桌面图像:在服务器端,使用QT的截图功能,可以捕获到当前桌面的图像。可以使用QScreen类来获取屏幕的像素数据,并进行压缩,以便在网络中传输。 3. 发送图像数据:服务器端将捕获到的图像数据通过网络发送给客户端。可以使用QT的套接字类来实现数据的发送和接收。 4. 显示远程桌面图像:客户端接收到服务器发送的图像数据后,使用QT的绘图功能,将图像绘制在自己的窗口上。可以使用QPainter类来实现图像的绘制。 5. 控制远程桌面:客户端可以通过鼠标键盘事件进行远程桌面的控制。可以使用QT的事件处理功能,捕获鼠标键盘事件,并将其发送给服务器。 通过以上步骤,就可以实现基本的QT远程控制桌面的功能。当然,实际的实现可能还需要考虑数据传输的稳定性、安全性等问题。这只是一个简单的框架,可以根据实际需求进行功能的扩展和优化。 ### 回答2: QT是一种跨平台的应用程序开发框架,提供了丰富的功能和工具来开发各种类型的应用程序。远程控制桌面是指通过网络远程控制其他计算机的桌面,可以在不同的地点遥控其他计算机上的操作。 QT提供了一些类和组件,可以用来实现远程控制桌面的功能。其中一个重要的组件是QDesktopServices类,它提供了访问计算机桌面上的文件和目录的功能,可以通过它来获取远程计算机上的桌面信息。 实现远程控制桌面的源码要包括以下几个步骤: 1.建立网络连接:使用QT的网络库,建立与远程计算机的连接,确保网络连接的稳定性和可靠性。 2.传输桌面画面:通过网络传输桌面画面,可以使用QT的网络传输类和图像处理类,将远程计算机的桌面图像传输到本地计算机,并显示在本地计算机的窗口中。 3.实现鼠标和键盘控制:使用QT提供的鼠标和键盘事件处理类,监听本地计算机的鼠标和键盘事件,并将这些事件传输到远程计算机,实现对远程计算机的控制。 4.安全性保证:在实现远程控制桌面的过程中,需要考虑到安全性问题,确保远程控制的合法性和安全性,例如使用加密传输数据,设置用户账号和密码等。 总结来说,通过QT提供的网络库、图像处理类和事件处理类,可以实现远程控制桌面的功能。通过建立网络连接,传输桌面画面,并实现鼠标和键盘控制,可以方便地遥控其他计算机上的操作。当然,为了保证远程控制的安全性,我们还需要考虑一些安全性措施。以上是大致的实现思路,具体的源码实现需要根据具体需求进行编写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值