簡體   English   中英

如何解決Qt中的設計障礙?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM