我正在尝试实现这种布局:
其中Widget1是某个小部件(QMainWindow的中央小部件),我想在其上添加第二个小部件Widget2,但它应该在Widget1的左下角。
编辑:我以前的描述不是很有用,所以我将尝试更详细地描述它。
我继承了QWidget类(class MyClass : public QWidget
),并创建了自己的小部件,可以在其中void MyClass ::paintEvent(QPaintEvent *event)
绘制屏幕上的内容。MyClass
然后centralWidget
是我的QMainWindow
。
现在,最重要的是,我想在其中显示一些视频的地方添加较小的窗口小部件(图像中的窗口小部件2)(在这里,我不是在问如何仅显示如何将窗口小部件2添加到我的视图中来显示视频)。这里的主要事情是Widget2位于Widget1内部(浮动在其中)。
EDIT2:我以前发布的代码是垃圾。
使用QGridLayout设置小部件的位置:
QGridLayout* layout = new QGridLayout(this);
// 2x2 layout
QWidget* green = new QWidget(this);
green->setStyleSheet("background:green;");
QWidget* yellow = new QWidget(this);
yellow->setStyleSheet("background:yellow;");
QWidget* red = new QWidget(this);
red->setStyleSheet("background:red;");
QWidget* blue = new QWidget(this);
blue->setStyleSheet("background:blue;");
layout->addWidget(green, 0, 0); // Top-Left
layout->addWidget(yellow, 0, 1); // Top-Right
layout->addWidget(red, 1, 0); // Bottom-Left
layout->addWidget(blue, 1, 1); // Bottom-Right
ui->centralWidget->setLayout(layout);
会给你这样的东西:
因此,使用QGridLayout定制您自己的窗口小部件并在其中设置窗口小部件的位置。
将另一个小部件设置为黑色背景的父级:
QGridLayout* layout = new QGridLayout(this);
// 2x2 layout
QWidget* green = new QWidget(this);
green->setStyleSheet("background:green;");
QWidget* yellow = new QWidget(this);
yellow->setStyleSheet("background:yellow;");
QWidget* red = new QWidget(this);
red->setStyleSheet("background:red;");
QWidget* blue = new QWidget(this);
blue->setStyleSheet("background:blue;");
layout->addWidget(green, 0, 0); // Top-Left
layout->addWidget(yellow, 0, 1); // Top-Right
layout->addWidget(red, 1, 0); // Bottom-Left
layout->addWidget(blue, 1, 1); // Bottom-Right
QWidget* mainWidget = new QWidget(this);
mainWidget->setStyleSheet("background:black;");
mainWidget->setLayout(layout);
QHBoxLayout* centralLayout = new QHBoxLayout(this);
centralLayout->addWidget(mainWidget);
ui->centralWidget->setLayout(centralLayout);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句