如何禁用调整大小光标

时间:2013-08-29 21:42:08

标签: qt window-managers

我使用QWidget::setFixedSize来避免调整窗口大小。尽管它有效,但是当通过边缘时仍然会出现调整大小样式的光标。

例如:http://bp3.blogger.com/_fhb-4UuRH50/R1ZMKyoIvMI/AAAAAAAAA6s/I08ntfXpp2k/s1600-h/w-resize.gif

嗯,你知道我的意思。我怎么能避免这种情况?

我使用Windows 7和默认的Windows管理器。

3 个答案:

答案 0 :(得分:8)

如果这是您的主窗口并且您使用的是Qt 4,则可以禁用主窗口状态栏的sizegrip:

this->statusBar()->setSizeGripEnabled(false);

否则,您可以将Qt::MSWindowsFixedSizeDialogHint标志设置为您的窗口:

this->setWindowFlags(this->windowFlags() | Qt::MSWindowsFixedSizeDialogHint);

答案 1 :(得分:2)

第一个解决方案

您可以将以下标志添加到窗口的标志中,以防止用户调整窗口大小:

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 );
};

CPP:

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);
}

答案 2 :(得分:2)

使用

<强>了setMinimumSize (QSIZE(WIDTH_PX,HEIGHT_PX))

<强> setMaximumSize (QSIZE(WIDTH_PX,HEIGHT_PX))

这两种方法都有 相同的 大小。您不会看到调整大小光标&amp;因此窗口没有调整大小/最大化。