【问题标题】:widget with two(or more) layout具有两个(或更多)布局的小部件
【发布时间】:2011-03-11 11:03:49
【问题描述】:

我需要在具有不同布局的其他小部件中设置小部件的方法...

这就像我们将小部件按一个布局分为带有标签的两部分,并且 这个小部件内部还有其他小部件,其布局类似于附加图像

而我们只有 4 个小部件:主小部件、标签 1 小部件、标签 2 小部件、按钮小部件,并且对于按钮使用一垂直和两个水平拉伸

有人能指出我正确的方法吗?谢谢。

【问题讨论】:

    标签: qt layout widget


    【解决方案1】:

    创建 QVBoxLayout,然后在其中添加两个 QHBoxLayout。在顶部 QHBoxLayout 添加标签,在底部添加拉伸、按钮、拉伸。

    #include <QString>
    #include <QApplication>
    #include <QWidget>
    #include <QPushButton>
    #include <QVBoxLayout>
    #include <QHBoxLayout>
    #include <QLabel>
    #include <QLocale>
    
    int main(int argc, char** argv){
        QApplication app(argc, argv);
    
        QWidget widget;
    
        QVBoxLayout* vLayout = new QVBoxLayout(&widget);
        QHBoxLayout* topLayout = new QHBoxLayout();
        QHBoxLayout* bottomLayout = new QHBoxLayout();
        QLabel* label1 = new QLabel(QObject::tr("Label1"));
        QLabel* label2 = new QLabel(QObject::tr("Label2"));
        label1->setAlignment(Qt::AlignCenter);
        label2->setAlignment(Qt::AlignCenter);
        QPushButton* btn1 = new QPushButton(QObject::tr("The Button!!!!"));
        topLayout->addWidget(label1);
        topLayout->addWidget(label2);
        bottomLayout->addStretch();
        bottomLayout->addWidget(btn1);
        bottomLayout->addStretch();
        vLayout->addLayout(topLayout);
        vLayout->addLayout(bottomLayout);
    
        widget.show();
    
        return app.exec();
    }
    

    【讨论】:

    • 在这种情况下没有底部和上部布局......我的意思是小部件内的按钮位置与标签分开。也许你提出申请草案并不难?感谢您的回复,我可以使用标签进行一种布局,使用带有底部和两个拉伸元素的子布局进行第二种布局....但是如何将这两种不同的布局合并到一个主小部件中?...
    • 好吧...我们不了解对方...假设按钮需要在小部件的中心(水平和垂直)...那么我们需要做哪些更改?标签一必须在小部件的中心半部,标签二必须在小部件后半部的中心...
    • @vinnitu:你想把按钮放在标签的顶部,所以它会隐藏部分底层控件?在这种情况下,您的描述与您的图片不符。
    • 是的,在这种情况下它会隐藏两个标签的一部分,那么你认为用 qt 怎么可能呢?因为可以使用坐标 (x, y) moveto 等设置位置,但问题是使用布局系统来完成
    • @vinnitu:我认为你不能使用默认布局来做到这一点,因为小部件不应该在布局中重叠,而且我在Qt 4. 但是,您可以制作自定义小部件(包含或模拟两个标签),或者您可以尝试制作自定义布局类。制作小部件将是最简单的 - 只需在paintEvent期间绘制您想要的任何文本(即两个标签)。然后使用标准布局将按钮添加到此小部件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    相关资源
    最近更新 更多