我使用Qt :: Window创建简单的QWidget Qt :: CustomizeWindowHint标志+固定大小(操作系统:Windows 7)。如何禁用顶部边框拖动此窗口?
创建的窗口没有标题栏 - 所以它不应该被鼠标拖动。这是Qt(4.8.4)中的错误吗?
代码:
#include <QtGui/QApplication>
#include <QWidget>
int main( int argc, char *argv[] )
{
QApplication a(argc, argv);
QWidget w;
w.setWindowFlags( Qt::Window | Qt::CustomizeWindowHint );
w.setFixedSize( 300, 200 );
w.show();
return a.exec();
}
截图:
UPD:请不要提出Qt :: FramelessWindowHint,因为它完成了删除边框。
唯一的问题是:为什么拖动仅适用于顶部边框?
报告为错误:QT-BUG-31144
答案 0 :(得分:1)
您可以将整个小部件设置为已禁用。
http://qt-project.org/doc/qt-4.8/qwidget.html#setDisabled
http://qt-project.org/doc/qt-4.8/qwidget.html#enabled-prop
或者您可以尝试制作无框窗口。
http://qt-project.org/doc/qt-4.8/widgets-windowflags.html
或者继承自己的QFrame
,并让它消耗任何鼠标事件。
http://qt-project.org/doc/qt-4.8/qframe.html
http://qt-project.org/doc/qt-4.8/qmouseevent.html
希望有所帮助。
为防止在Windows中专门移动,您可以查看处理:
WM_NCHITTEST
答案 1 :(得分:0)
w.setWindowFlags( Qt::Window | Qt::CustomizeWindowHint | Qt::FramelessWindowHint );
可以解决问题。