【嵌入式——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)