我QWidget::setFixedSize
用来避免我的窗口被调整大小。即使它有效,调整大小样式的光标在越过边缘时仍会出现。
例如:http ://bp3.blogger.com/_fhb-4UuRH50/R1ZMKyoIvMI/AAAAAAAAA6s/I08ntfXpp2k/s1600-h/w-resize.gif
嗯,你知道我的意思。我怎样才能避免这种情况?
我使用带有默认 Windows 管理器的 Windows 7。
我QWidget::setFixedSize
用来避免我的窗口被调整大小。即使它有效,调整大小样式的光标在越过边缘时仍会出现。
例如:http ://bp3.blogger.com/_fhb-4UuRH50/R1ZMKyoIvMI/AAAAAAAAA6s/I08ntfXpp2k/s1600-h/w-resize.gif
嗯,你知道我的意思。我怎样才能避免这种情况?
我使用带有默认 Windows 管理器的 Windows 7。
如果这是您的主窗口并且您使用的是 Qt 4,您可以禁用主窗口状态栏的 sizegrip:
this->statusBar()->setSizeGripEnabled(false);
否则,您可以将Qt::MSWindowsFixedSizeDialogHint
标志设置为您的窗口:
this->setWindowFlags(this->windowFlags() | Qt::MSWindowsFixedSizeDialogHint);
第一个解决方案
您可以将以下标志添加到窗口的标志中,以防止用户调整窗口大小:
setWindowFlags(this->windowFlags() |= Qt::FramelessWindowHint);
这是有关Window Flags的更多信息。
二(丑)实验解决方案
这是一种肮脏的变通办法……我完全清楚这样一个事实,即这并不干净。
我刚刚编写了这个小主窗口,当主窗口区域离开时,它会手动更改光标。
注意:您必须考虑副作用。也许子小部件需要另一个光标形状,但这会覆盖整个应用程序的光标。
这可以用作进一步开发和简单应用程序的起点。
标题:
class CMainWindow :
public QMainWindow
{
public:
CMainWindow(QWidget* parent = nullptr);
virtual ~CMainWindow(void);
protected:
virtual void leaveEvent( QEvent *event );
virtual void enterEvent( QEvent *event );
};
cp:
CMainWindow::CMainWindow(QWidget* parent) : QMainWindow(parent)
{
setMouseTracking(true);
}
CMainWindow::~CMainWindow(void)
{
}
void CMainWindow::leaveEvent( QEvent *event )
{
qApp->setOverrideCursor(QCursor(Qt::ArrowCursor));
QMainWindow::leaveEvent(event);
}
void CMainWindow::enterEvent( QEvent *event )
{
qApp->restoreOverrideCursor();
QMainWindow::enterEvent(event);
}
利用
setMinimumSize (QSize(width_px,height_px))
setMaximumSize (QSize(width_px,height_px))
两种方法的大小相同。您不会看到调整大小的光标,因此窗口不会调整大小/最大化。