[英]How to tackle this design obstacle in Qt?
我需要繪制一個在左側具有一些選項的表格,如下圖所示:
現在,當用戶單擊OptionA
,右側將顯示一個單獨的相關布局。 當用戶單擊OptionB
,右側將顯示一個單獨的相關布局。
我當前針對此類問題的設計方法如下:
具有帶有兩個框架的水平布局的表單。 一個框架具有選項,而另一框架將托管其他形式。 因此,在我的情況下, optionA
將具有單獨的形式,例如formA, OptionB
將具有其自己的形式,例如formB,而OptionC
將具有其自己的形式,例如formC。
現在,當用戶單擊OptionA
,formA將顯示在FrameHost內,類似地,當用戶單擊OptionC
,formC將顯示在FrameHost內。 我的問題是,這是給每個選項一個獨立形式的好方法嗎?
我的另一種想法是相反的,那就是將所有窗體(A,B和C)布局放在一個窗體內的單獨框架中,當用戶單擊OptionA
,具有FormA內容的框架將變為可見,而其他窗體將被隱藏。 因此,一次將顯示一幀。 解決此類問題的最佳方法是什么?
第一種方法可以,但是缺少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)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.