首页 文章

中心QLabel在QScrollArea中派生小部件

提问于
浏览
1

我应该如何将QLabel派生小部件 papyrus 置于QScrollArea中心?

QScrollArea *scroll_area = new QScrollArea(this);
scroll_area->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
scroll_area->setWidgetResizable(true);
scroll_area->setBackgroundRole(QPalette::Dark);
papyrus = new Papyrus(scroll_area);
scroll_area->setWidget(papyrus);
setCentralWidget(scroll_area);
resize(800, 600);

这是我正在使用的片段,但我的小部件贴在左上角......

2 回答

  • 0

    (main.cpp示例):

    #include <QApplication>
    #include "MainWindow.h"
    
    #include <QScrollArea>
    #include <QLabel>
    #include <QHBoxLayout>
    
    int main(int argc, char** argv)
    {
        QApplication a(argc, argv);
    
        QLabel label("Label");
        label.setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    
        QScrollArea area;
        area.setWidgetResizable(true);
    
        area.setWidget(&label);
        area.show();
    
        return a.exec();
    }
    
  • 0

    根据this question,使用对齐属性需要为您尝试居中的 QWidget 设置固定大小(设置最小值或最大值不足 - 您必须调用 setFixedSize() ),否则将忽略对齐属性 . 如果设置固定大小与代码的其他部分不兼容,您应该尝试制作一个不同的 QWidget ,其大小可以填充滚动区域并在 QWidget 中居中 papyrus .
    在任何一种情况下,您可能需要删除 setWidgetResizable(true) ,因为这也可能会覆盖对齐属性 .

相关问题