在QHBoxLayout中屏幕外添加小部件以便稍后显示

时间:2018-04-10 20:10:29

标签: c++ qt user-interface

我想要的东西基本上是一个包含三个项目的面板,中间的一个具有屏幕的大小(这里是QScrollArea)。关键是我然后根据需要移动QScrollArea以显示左侧和右侧项目,如下图所示。

Example GUI

这里,左侧和右侧标签应该被隐藏,中间的文本编辑占据了整个滚动区域(这里隐藏了滚动条)。单击标有" Structure"的按钮;和"选项"在左侧和右侧应滚动所述滚动区域并显示相应的选项卡。 Qt Designer结构如下:

Qt Designer structure

mrte_text是我自己的WYSIWYG小部件的自定义类。这两个选项卡都是为我在MainWindow::show添加以下代码的场合创建的临时窗口小部件:

void MainWindow::show()
{
    QHBoxLayout *l = (QHBoxLayout*)ui->scrollAreaWidgetContents->layout();
    QMainWindow::show();
    l->insertWidget(0, searchTab);
    l->insertWidget(2, chatTab);
    baseX = ui->scrollAreaWidgetContents->x();
    baseY = ui->scrollAreaWidgetContents->y();
    searchTab->move(baseX - searchTab->width(), baseY);
    chatTab->move(baseX + ui->mrte_text->width(), baseY);
}

移动标签似乎没有做任何事情,因为删除move行没有任何改变,但我已经探索过这种可能性。

1 个答案:

答案 0 :(得分:1)

看起来您可以使用QSplitter

处理的内容

在不相关的说明中,您不应该使用show来进行这种设置。该方法不仅在第一次显示小部件时调用。