1、设置带边框的QWidget不能最大化,最小化,以及固定大小(不能通过鼠标拖动边框改变该控件的大小):可以通过setWindowFlags();函数对窗口样式进行设置
t::WindowFlags flags = 0;
flags |= Qt::Window; // 设置控件显示为为窗口样式
flags |= Qt::WindowCloseButtonHint; // 设置关闭窗口按钮
flags |= Qt::MSWindowsFixedSizeDialogHint; // 设置鼠标拖动边框不能改变控件大小
mWidget->setWindowFlags(flags);
2、使用鼠标拖动标题栏不能改变该控件的位置:Qt的窗体结构中,Window Title和Client Area是分离开的,其中控件的标题栏的鼠标事件有:
NonClientAreaMouseMove = 173,
NonClientAreaMouseButtonPress = 174,
NonClientAreaMouseButtonRelease = 175,
NonClientAreaMouseButtonDblClick = 176,
可以通过实现event(QEvent *event)方法,截取这几个事件,完成相应的功能。所以对于使鼠标拖动不改变窗体位置这一需求,我暂时采用如下思路实现:
- 先定义一个标志位hasClickedTiTleBar_flag,初始化为零;
- 在窗体控件的对应的类中实现event(QEvent *event)方法&#x