我要完成的工作:

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

例如。:
第1类(继承QVBoxLayout)具有QLabel显示约会,并且这些标签使用this->addWidget(labels);设置

类2(继承QVBoxLayout)具有QLineEdits(以此类推)来编辑约会,并且这些对象也使用this->addWidget(lineedits);设置

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

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

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

最佳答案

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);
    }
}

关于c++ - 是否可以继承QVBoxLayout并将其设置为QWidget中的布局?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11741356/

10-11 14:07