1

我需要绘制一个左侧有一些选项的表格,如下图所示:

在此处输入图像描述

现在,当用户点击 时OptionA,右侧会显示一个单独的相关布局。当用户点击 时OptionB,右侧会显示一个单独的相关布局。

我目前针对此类问题的设计方法如下:

有一个带有两个框架的水平布局的表单。一个框架有选项,而另一个框架将托管其他表单。所以,在我的例子optionA中,会有一个单独的表单,比如 formA,OptionB会有自己的表单,比如 formB,并且OptionC会有自己的表单,比如 formC。

现在,当用户点击OptionAformA 时,会显示在 FrameHost 中,类似地,当用户点击 时OptionC,formC 将显示在 FrameHost 中。我的问题是,这是否是一种为每个选项提供独立形式的好方法?

我的另一个想法是相反的,将所有表单(A、B 和 C)布局放在一个表单内的单独框架内,并且当用户单击OptionA具有 FormA 内容的框架时,将使其可见,而其他内容将被隐藏。因此,一次将显示一帧。解决此类问题的最佳方法是什么?

4

1 回答 1

1

第一种方法还可以,但是缺少QStackWidget的概念。我个人会使用 QStackedWidget 来显示表单,具体取决于单击的专有单选按钮。

第二种方法非常骇人听闻,因为它试图模仿这些表单将显示在同一个地方的事实,然而,它会使它们在可见/隐藏属性上垂直欺骗。

我会这样写代码:

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)));
于 2014-05-25T04:21:40.183 回答