2013-08-29 15 views
6

QWidget::setFixedSizeを使用して、ウィンドウのサイズが変更されないようにします。動作しても、サイズを変更するスタイルのカーソルは、エッジを通過するときに表示されます。例えばこのようサイズ変更カーソルを無効にする方法

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

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

私はWindows 7をデフォルトのウィンドウマネージャーと併用しています。

+0

興味深い質問です。私はこれが可能であるとは確信していません。これはウィンドウマネージャの機能ではありませんか?** Qtはこのカーソルを制御できないことがあります**。おそらくあなたの質問にタグを追加する必要があります。 'ウィンドウマネージャー'?どのようなOSですか?どのウィンドウマネージャを使用していますか?あなたの問題を解決するためには別の種類の専門知識が必要になるかもしれません。 – Greenflow

+0

わかりません - ウィンドウフラグを 'Qt :: Dialog | QT :: Windowは何ですか? –

+0

メインウィンドウ用ですか?どのQtバージョンを使用していますか? – thuga

答えて

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

これはあなたのメインウィンドウで、あなたはQtの4を使用している場合、あなたはあなたのメインウィンドウのステータスバーのsizegripを無効にすることができます

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

それ以外の場合は、ウィンドウにQt::MSWindowsFixedSizeDialogHintフラグを設定することができます。

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

最初のアップヴォート、2番目のコーナーからリサイズハンドルが削除されません。少なくともMSWではありません –

2

使用

setMinimumSize(QSIZE(width_px、height_px))

setMaximumSize(QSIZE(width_px、height_px))両方の方法は、同じを有する

サイズ変更カーソルが表示されません&ウィンドウはresを取得しませんized/maximized。

+0

これは正しい解決方法です – Faas

+0

Qt 5.10では動作しません。 –

関連する問題