我需要绘制一个左侧有一些选项的表单,这可以在下图中看到:
现在,当用户点击OptionA
时,右侧会显示一个单独的相关布局。
当用户点击OptionB
时,右侧会显示一个单独的相关布局。
我目前针对此类问题的设计方法如下:
使表格具有两个框架的水平布局。一帧具有选项,而另一帧具有其他形式。所以,在我的情况下,optionA
会有一个单独的表单,比如formA,OptionB
会有自己的形式,比如formB,而OptionC
会有自己的形式,比如formC。
现在,当用户点击OptionA
时,formA将显示在FrameHost中,类似用户点击OptionC
时,formC将显示在FrameHost中。我的问题是,这是一个很好的方法,为每个选项提供一个独立的形式吗?
我的另一个想法是将所有表单(A,B和C)布局放在一个表单内的单独框架内,当用户点击OptionA
时,将生成具有FormA内容的框架可见,而其他人则被隐藏。因此,一次显示一帧。解决这类问题的最佳方法是什么?
答案 0 :(得分:1)
第一种方法没问题,但缺乏QStackWidget的概念。我个人会使用QStackedWidget来显示表单,具体取决于点击的独家单选按钮。
第二种方法是非常hackish,因为它试图模仿这些形式将显示在同一个地方的事实,但是,它会使它们在可见/隐藏属性上垂直欺骗。
我会写这样的代码:
MyWidget *formA = new MyWidget;
MyWidget *formB = new MyWidget;
MyWidget *formC = new MyWidget;
QStackedWidget *stackedWidget = new QStackedWidget;
stackedWidget->addWidget(formA);
stackedWidget->addWidget(formB);
stackedWidget->addWidget(formC);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(stackedWidget);
setLayout(layout);
connect(myButtonGroup, SIGNAL(clicked(int)), SLOT(setCurrentIndex(int)));