代码之家  ›  专栏  ›  技术社区  ›  Łukasz Lew

Qt:布局和小部件有什么区别?

  •  7
  • Łukasz Lew  · 技术社区  · 16 年前

    但是现在我发现我无法使用addWidget将它添加到其他小部件中。 例如,如何向QSplitter添加布局?

    3 回复  |  直到 16 年前
        1
  •  6
  •   Kaleb Pederson    16 年前

    QWidget 内置了对通过 layout() setLayout(...) 功能。布局对象控制可能添加到布局中的不同子窗口小部件的位置。此外,它确保基于 constraints setLayout() ,它将设置父窗口小部件的大小。

    但是,有些小部件更像布局管理器而不是小部件,例如 QSplitter QTabWidget . 例如,考虑一下QSplitter。虽然是一个小部件,但它提供了两个可以使用的不同区域。在这种情况下,两个不同区域的单个布局管理器实际上没有意义。像QSplitter一样,QTabWidget有一些行为使得单个布局不仅不必要,而且没有用处。

    我认为正是上述布局和小部件的融合使得布局和小部件的分离有时令人困惑。

        2
  •  4
  •   dmazzoni    16 年前

    Qt文档中的这个例子应该会有所帮助( http://qt.nokia.com/doc/4.2/layout.html

    QWidget *window = new QWidget;
    QPushButton *button1 = new QPushButton("One");
    QPushButton *button2 = new QPushButton("Two");
    QPushButton *button3 = new QPushButton("Three");
    QPushButton *button4 = new QPushButton("Four");
    QPushButton *button5 = new QPushButton("Five");
    
    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(button1);
    layout->addWidget(button2);
    layout->addWidget(button3);
    layout->addWidget(button4);
    layout->addWidget(button5);
    
    window->setLayout(layout);
    window->show();
    
        3
  •  4
  •   Abhinav Gupta    16 年前

    QLayout

    布局是一种优雅而灵活的方式,可以在容器中自动排列子部件。每个小部件通过sizeHint和sizePolicy属性向布局报告其大小要求,布局相应地分配可用空间。

    例如,将小部件的布局设置为 QHBoxLayout

    你可以多看看 here .