另一个小部件内的小部件Qt

car*_*rvo 4 c++ qt qt5

我正在尝试实现这种布局:

在此输入图像描述

其中Widget1是一些小部件(QMainWindow的中央小部件),我想在它上面添加第二个小部件Widget2,但它应该在Widget1的左下角.


编辑:我之前的描述不是很有用,所以我将尝试更详细地描述它.

我继承QWidget class(class MyClass : public QWidget)并创建我自己的小部件,我在void MyClass ::paintEvent(QPaintEvent *event)屏幕上绘制一些东西. MyClasscentralWidget我的QMainWindow.

现在最重要的是,我想添加更小的小部件(图像中的Widget2),我将在那里显示一些视频(这里我不知道如何只显示视频如何将这个Widget2添加到我的视图中).这里的主要内容是Widget2在里面(浮动)Widget1.

EDIT2:我发布的上一个代码是垃圾.

moh*_*uje 6

使用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);
Run Code Online (Sandbox Code Playgroud)

会给你这样的东西:

在此输入图像描述

因此,使用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);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 提防SO Citizen,这篇文章是Microsoft的宣传!(http://orig05.deviantart.net/e2b8/f/2012/035/f/7/windows_8_square_logo_by_darkmaster79-d4on7uq.png) (3认同)