6

QWidget::setFixedSizeウィンドウのサイズが変更されるのを避けるために使用します。機能しますが、エッジを通過するとサイズ変更スタイルのカーソルが表示されます。

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

まあ、あなたは私が何を意味するか知っています。どうすればそれを回避できますか?

デフォルトの Windows マネージャーで Windows 7 を使用しています。

4

3 に答える 3

2

使用する

setMinimumSize (QSize(width_px,height_px))

setMaximumSize (QSize(width_px,height_px))

両方のメソッドのサイズは同じです。サイズ変更カーソルが表示されず、ウィンドウがサイズ変更/最大化されません。

于 2016-08-17T05:39:03.910 に答える
2

最初の解決策

ウィンドウのフラグに次のフラグを追加して、ユーザーがウィンドウのサイズを変更できないようにすることができます。

setWindowFlags(this->windowFlags() |= Qt::FramelessWindowHint);

Window Flagsに関する詳細情報は次のとおりです。


2番目の(醜い)実験ソリューション

これは一種の汚い回避策です...これがきれいではないという事実を私は十分に認識しています。

メイン ウィンドウの領域を離れたときにカーソルを手動で変更するこの小さなメイン ウィンドウを作成しました。

注: 副作用を考慮する必要があります。子ウィジェットに必要な別のカーソル形状があるかもしれませんが、これは完全なアプリケーションのカーソルをオーバーライドします。

これは、さらなる開発や単純なアプリケーションの出発点として使用できます。

ヘッダ:

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);
}
于 2013-08-30T05:02:42.500 に答える