2017-01-13 14 views
2

私は、QMLをコーディングするのが悪く、Qtの基本的なバグが原因ではないことを願っています。QMLアプリケーションのウィンドウサイズを変更する

アプリケーションウィンドウの横方向(幅の変更)のサイズを変更すると、ウィンドウがサイズ変更されずにマウスを離したところで、その最小幅に戻ってスナップします。私は、バグを再現するための最も基本的な要件にそれを取り除くことができました。

  • mousepressを解放しないと、幅が最小幅とマウスの間で往復します。
  • 項目を削除すると、マウスを長時間にリリースされていない場合(高さを変える)縦のサイズ変更、バグ
  • は時々アプリケーションをクラッシュする(例えばリサイズの状態にある)削除
  • サイズを変更することは事実上不可能ですこの

main.qml

import QtQuick 2.5 
import QtQuick.Window 2.2 
import QtQuick.Controls 1.4 

ApplicationWindow { 
    id: root 
    visible: true 
    minimumHeight: 768 
    minimumWidth: 1024 
    title: qsTr("Test") 
    color: "#292525" 

    Item { 
     width: 0.9*parent.width 
     height: 0.1*parent.height 
    } 
} 

なぜこれが起こっているすべてのアイデアのために?

答えて

5

あなたには微妙な結合ループがあります。 QtQuickControlsのApplicationWindowは、ウィンドウのコンテンツのサイズをcontentItemとし、ApplicationWindowのすべての子が(暗黙のうちに)子孫になりますが、ウィンドウのサイズに合わせてコンテンツのサイズを変更しようとしますそれは内に存在していること。

をので、あなたはApplicationWindowがあなたのウィンドウのサイズを変更しますcontentItemのサイズを変更するあなたのItemのサイズを変更するあなたの窓を、リサイズ、(あなたと一緒に戦っ)。

このような何かがうまくいくかもしれない:

import QtQuick 2.5 
import QtQuick.Window 2.2 
import QtQuick.Controls 1.4 

ApplicationWindow { 
    id: root 

    visible: true 
    minimumHeight: 768 
    minimumWidth: 1024 
    title: qsTr("Test") 
    color: "#292525" 

    // This item will just match the Window's size... 
    Item { 
     anchors.fill: parent 

     // ... and here, we'll fill a part of it with a rectangle. 
     Rectangle { 
      color: "red" 
      width: 0.9*parent.width 
      height: 0.1*parent.height 
     } 
    } 
} 
+0

は私が結合ループを認識していなかった、あなたにロビンをありがとうございました。 – arynaq

+0

またはノルウェー語でTakk :) – arynaq

+0

裸のhyggelig! :) –

関連する問題