繁体   English   中英

将QLabel派生到QScrollArea中的中心小部件

[英]Center QLabel derived widget inside a QScrollArea

如何将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);

这是我正在使用的代码段,但我的窗口小部件仍停留在左上方...

对于这个问题 ,使用对齐属性要求为您要居中的QWidget设置固定大小(设置最小值或最大值不足-必须调用setFixedSize() ),否则对齐属性将被忽略。 如果设置固定大小与代码的另一部分不兼容,则应尝试制作另一个QWidget ,其大小应适合该QWidget的滚动区域和中心papyrus
无论哪种情况,您都可能需要删除setWidgetResizable(true)因为这也可能会覆盖对齐方式属性。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM