是否可以继承QVBoxLayout并将其设置为QWidget中的布局?

时间:2012-07-31 13:35:15

标签: c++ qt layout

我正在努力实现的目标:

创建2个继承QVBoxLayout的类,只是为了用一系列不同的对象设置每个类。

例如为: Class 1(继承QVBoxLayout),有QLabel显示约会和那些用this->addWidget(labels);设置的标签

Class 2(继承QVBoxLayout),有QLineEdits(等等)来编辑约会,这些对象也设置为this->addWidget(lineedits);

是否有可能有一个QWidget类,然后通过调用this->setLayout(class1_object);this->setLayout(class2_object);在这两个布局之间切换?

或者您如何建议在窗口小部件上交换活动对象(单击视图部件上的编辑按钮或编辑部件上的保存按钮)?

只需使用object->setShown(false);

1 个答案:

答案 0 :(得分:1)

IMO,这里使用QTabWidget更容易。 使用2个标签创建QTabWidget。在Tab1上,放置标签。在Tab2上,进行编辑。调用Tab2就像“编辑约会”。现在,使用currentChanged()插槽来捕获切换选项卡。

如果保存编辑应该很简单,您只需将编辑后的数据从编辑复制到标签,反之亦然。

如果保存需要更多,例如如果需要确认对话框,则可以允许用户更改回Tab1,直到满足某些条件:

void MainWindow::on_tabWidget_currentChanged(int index)
{
    //if the user is trying to go back to Tab1 (where the labels are)...
    if(index == 0)
    {
         //...and if user didn't accept something, we just return him to the current tab
         //It's probably a good idea to tell him what went wrong, too :P
         if(!userAcceptedSaveDialog())
             ui.tabWidget.setCurrentIndex(1);        
    }
}