私は Qt とその Qt Designer に慣れています。
レイアウト コントロール 'grid' と 'StackPanel' を備えた XAML はどこか似ていますが、Qt のデザインの最も一般的なプロパティのいくつかを見逃したり、見つけられませんでした。私は XAML にまったく慣れていないので、回答またはさらに利用可能なドキュメントを知りたいです。
たとえば、デフォルトの高さと最小の高さと最小の幅で、水平または垂直に 2 つの要素 (ボタンとしましょう) を追加したいとします。水平に配置されている場合、それらは左側に押され、右側の残りの側は自由になるはずです。つまり、ウィンドウのサイズを大きくしても、ボタンのサイズは大きくなりません。Qt では、これはスペーサーと組み合わせたグリッドによって実現されます (例については、このチュートリアルを参照してください)。
私の最初の XAML は、私が期待したものとはかけ離れています。の定義はRowDefinition
チュートリアルからコピーされます。とはいえ、意味がわかりません…。
<Window x:Class="SpectrumViewer.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Spectrum Viewer" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Margin="8" VerticalAlignment="Top">
<Button MinWidth="75" MaxHeight="23" Margin="10" HorizontalAlignment="Left" Width="100" Name="buttonTest">test</Button>
<TextBox MinWidth="75" MaxHeight="23" Margin="10" HorizontalAlignment="Left" Width="150" Name="textBoxValue"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="8" >
<Button MinWidth="75" MaxHeight="23" Margin="10" HorizontalAlignment="Left" Width="100" Name="button1">button 1</Button>
<Button MinWidth="75" MaxHeight="23" Margin="10" HorizontalAlignment="Left" Width="100" Name="button2">button 2</Button>
</StackPanel>
</Grid>
</Window>
次の画像は、要素が左側に押し出されていることを示していますが、上下に重ねられた 2 つのパネルは上部に押し出されていません。両方をVerticalAlignment="Top"
オーバーラップして設定すると、これも間違っています。
ウィンドウのサイズを変更すると、要素のサイズが変更されず、2 番目の要素がStackPanel
最初の要素と重なっていることがわかります。
代わりに、要素のサイズを最小幅に変更し、それ以上のウィンドウのサイズ変更を禁止する必要があります。