我应该如何将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);
这是我正在使用的代码段,但我的窗口小部件粘在左上方...
答案 0 :(得分:0)
对于this question,使用对齐属性需要为您要居中的QWidget
设置固定大小(设置最小值或最大值不足-您必须调用setFixedSize()
) ,否则对齐属性将被忽略。如果设置固定大小与代码的另一部分不兼容,则应尝试制作另一个QWidget
,其大小可以填充滚动区域并在papyrus
中居中QWidget
。
无论哪种情况,您都可能需要删除setWidgetResizable(true)
,因为这也可能会覆盖对齐方式属性。
答案 1 :(得分: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();
}