17-窗体类重要特性的设置
6.3.2 窗体类重要特性的设置
窗体显示或运行的一些特性可以通过QWidget的一些函数设置,如6.2节介绍对话框的创建和使用时,有如下的代码:
dlgLocate = new QWDialogLocate(this);
dlgLocate->setAttribute(Qt::WA_DeleteOnClose);
Qt::WindowFlags flags=dlgLocate->windowFlags();
dlgLocate->setWindowFlags(flags | Qt::WindowStaysOnTopHint);
这段代码就用到了两个设置函数——setAttribute()和setWindowFlags(),它们可以设置窗体的显示特性和运行特性。下面介绍QWidget类中用于窗体属性设置的几个主要函数的功能。
1.setAttribute()函数
setAttribute()函数用于设置窗体的一些属性,其函数原型为:
void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)
枚举类型Qt::WidgetAttribute定义了窗体的一些属性,可以打开或关闭这些属性。枚举类型Qt::WidgetAttribute 常用的常量及其意义见表6-2。
| 常量 | 意义 | | :----- | :----- | :----- | :----- | | Qt::WA_AcceptDrops | 允许窗体接收拖放来的组件 | | Qt::WA_DeleteOnClose | 窗体关闭时删除自己,释放内存 | | Qt::WA_Hover | 鼠标进入或移出窗体时产生paint事件 | | Qt::WA_AcceptTouchEvents | 窗体是否接受触屏事件 |
2.setWindowFlags()函数
setWindowFlags()函数用于设置窗体标记,其函数原型是:
void QWidget::setWindowFlags(Qt::WindowFlags type)
参数type是枚举类型Qt::WindowType的值的组合,用于同时设置多个标记。
另外一个函数setWindowFlag()用于一次设置一个标记,其函数原型为:
void QWidget::setWindowFlag(Qt::WindowType flag, bool on = true)
可单独打开或关闭某个属性。枚举类型Qt::WindowType常用的常量值见表6-3。
| 常量 | 意义 | | :----- | :----- | :----- | :----- | | 表示窗体类型的常量 | | Qt::Widget | 这是QWidget类的缺省类型。这种类型的窗体,如果它有父窗体,就作为父窗体的子窗体;否则就作为一个独立的窗口 | | Qt::Window | 表明这个窗体是一个窗口,通常具有窗口的边框、标题栏,而不管它是否有父窗体 | | Qt::Dialog | 表明这个窗体是一个窗口,并且要显示为对话框(例如在标题栏没有最小化、最大化按钮)。这是QDialog类的缺省类型 | | Qt::Popup | 表明这个窗体是用作弹出式菜单的窗体 | | Qt::Tool | 表明这个窗体是工具窗体,具有更小的标题栏和关闭按钮,通常作为工具栏的窗体 | | Qt::ToolTip | 表明这是用于Tooltip消息提示的窗体 | | Qt::SplashScreen | 表明窗体是splash屏幕,是QSplashScreen类的缺省类型 | | Qt::Desktop | 表明窗体是桌面,这是QDesktopWidget类的类型 | | Qt::SubWindow | 表明窗体是子窗体,例如QMdiSubWindow就是这种类型 | | 控制窗体显示效果的常量 | | Qt::MSWindowsFixedSizeDialogHint | 在Windows平台上,使窗口具有更窄的边框,用于固定大小的对话框 | | Qt::FramelessWindowHint | 创建无边框窗口 | | 定制窗体外观的常量,要定义窗体外观,需要先设置 | | Qt::CustomizeWindowHint | | Qt::CustomizeWindowHint | 关闭缺省的窗口标题栏 | | Qt::WindowTitleHint | 窗口有标题栏 | | Qt::WindowSystemMenuHint | 有窗口系统菜单 | | Qt::WindowMinimizeButtonHint | 有最小化按钮 | | Qt::WindowMaximizeButtonHint | 有最大化按钮 | | Qt::WindowMinMaxButtonsHint | 有最小化、最大化按钮 | | Qt::WindowCloseButtonHint | 有关闭按钮 | | Qt::WindowContextHelpButtonHint | 有上下文帮助按钮 | | Qt::WindowStaysOnTopHint | 窗口总是处于最上层 | | Qt::WindowStaysOnBottomHint | 窗口总是处于最下层 | | Qt::WindowTransparentForInput | 窗口只作为输出,不接受输入 |
Qt::Widget、Qt::Window等表示窗体类型的常量可以使窗体具有缺省的外观设置,如果设置为Qt::Dialog类型,则窗体具有对话框的缺省外观,例如标题栏没有最小化、最大化按钮。
控制窗体显示效果和外观的设置项可定制窗体的外观,例如设置一个窗体只有最小化最大化按钮,没有关闭按钮。
3.setWindowState()函数
setWindowState()函数使窗口处于最小化、最大化等状态,其函数原型是:
void QWidget::setWindowState(Qt::WindowStates windowState)
枚举类型Qt::WindowState表示了窗体的状态,其取值见表6-4。
| 常量 | 意义 | | :----- | :----- | :----- | :----- | | Qt::WindowNoState | 正常状态 | | Qt::WindowMinimized | 窗口最小化 | | Qt::WindowMaximized | 窗口最大化 | | Qt::WindowFullScreen | 窗口填充整个屏幕,而且没有边框 | | Qt::WindowActive | 变为活动的窗口,例如可以接收键盘输入 |
4.setWindowModality()函数
setWindowModality()函数用于设置窗口的模态,只对窗口类型有用。其函数原型为:
void setWindowModality(Qt::WindowModality windowModality)
枚举类型Qt::WindowModality的取值意义见表6-5。
| 常量 | 意义 | | :----- | :----- | :----- | :----- | | Qt::NonModal | 无模态,不会阻止其他窗口的输入 | | Qt::WindowModal | 窗口对于其父窗口、所有的上级父窗口都是模态的 | | Qt::ApplicationModal | 窗口对整个应用程序是模态的,阻止所有窗口的输入 |
5.setWindowOpacity()函数
setWindowOpacity()函数用于设置窗口的透明度,其函数原型如下:
void QWidget::setWindowOpacity(qreal level)
参数level是1.0(完全不透明)至0.0(完全透明)之间的数。窗口透明度缺省值是1.0,即完全不透明。