介绍了 juce::Rectangle 以及 juce::FlexBox 这两个拉版工具後,这篇介绍 juce::Grid。Grid 跟 FlexBox 有相似处,各有优缺点,熟悉两者後,视需求挑选。
延续前一篇范例,以 Grid 改写如下:
void MainComponent::resized()
{
const int kRowDistance = 10;
const int kButtonDistance = 20;
auto bounds = getLocalBounds().reduced(20, 10);
auto first_row = bounds.removeFromTop(getLocalBounds().getHeight() * 0.2);
// Caculate width for each button.
const auto button_width = (bounds.getWidth() - (kButtonDistance * 2.0)) / 3.0;
const auto button_height= getLocalBounds().getHeight() * 0.2;
juce::Grid grid;
grid.rowGap = 20_px;
grid.columnGap = 20_px;
using Track = Grid::TrackInfo;
grid.templateRows = {Track(1_fr), Track(2_fr), Track(2_fr)};
grid.templateColumns = {Track(1_fr), Track(1_fr), Track(1_fr)};
grid.items.add(GridItem(google_button_).withWidth(button_width));
grid.items.add(GridItem(duckduckgo_button_));
grid.items.add(GridItem(bing_button_));
grid.performLayout(bounds);
}
Grid 使用 Row(横列)以及 Column(直行)来拉版面。上述程序码先设定行列间距为 20 pixel。
接着利用 templateRows 以及 templateColumns 来设定行与列的数量以及大小分布。
然後把三个 TextButton 以 GridItem 包装起来後,加到 Grid。最後再呼叫 performLayout 进行排版。效果如下:
目前为止介绍的 GUI Layout 工具可以视不同场合互相搭配,以建构复杂的使用者介面。 接下来要介绍的是改变个别控制项「外观」的工具——juce::LookAndFeel。
JUCE DemoRunner 的范例如下,一模一样的控制项(行为不变),透过 JUCE LookAndFeel 机制,外观可以千变万化:
<<: 30-3 之软件架构设计原则 2 - OCP 开放封闭原则
这篇写的东西年轻不懂事时其实有些曾踩到过,列在这提醒未来的自己不要再犯了 出於书本 Chapter...
在介绍react实例之前,首先来介绍一下其操作原理---Virtual DOM,并比较和Actual...
在 Day03 我们使用 GCE 建立一台 VM,今天要学习如何连线到虚拟机,并在服务器上使用 No...
大家好,我是YIYI,今天我要来制作日记部分的介面。 如何进入日记页面? 日记的部分是点选像是笔的i...
遮是一篇超级没有语言技术性质的文章!请三思慎入!! 今天要来做查询天气的功能。 一样有事前作业: 1...