gpt4 book ai didi

网格布局内的qt垂直和水平布局?

转载 作者:行者123 更新时间:2023-12-04 13:06:20 25 4
gpt4 key购买 nike

Actual One
Desired One

我是 Qt 应用程序开发的新手。我附上了两个屏幕截图,一个是所需的用户界面,另一个是使用代码创建的。
我相信我的代码会解释一些事情,而不是我在这里打字并在这里混淆我所有的 friend 。什么需要改变/更新?

    /*    HEADER FILE    */

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
Q_OBJECT

public:
explicit Widget(QWidget *parent = 0);
~Widget();

private:
// Ui::Widget *ui;
};

#endif // WIDGET_H

/*Implementation Code */

#include "widget.h"
#include "ui_widget.h"
#include<QGridLayout>
#include<QVBoxLayout>
#include<QHBoxLayout>

Widget::Widget(QWidget *parent) :
QWidget(parent)//,
//ui(new Ui::Widget)
{
this->setGeometry(50,50,850,650);
QGridLayout *gridLayout= new QGridLayout(this);
setLayout(gridLayout);
QVBoxLayout *vLayout = new QVBoxLayout(this);
QHBoxLayout *hLayout = new QHBoxLayout(this);
//QWidget *tmp1 = new QWidget(this);
//QWidget *tmp2 = new QWidget(this);
// tmp1->setLayout(vLayout);
// tmp2->setLayout(hLayout);

gridLayout->addLayout(vLayout,0,3);
gridLayout->addLayout(hLayout,3,0);
//gridLayout->addWidget(tmp1,0,3,1,1);
//gridLayout->addWidget(tmp2,3,0,1,1);

QWidget *w = new QWidget(this);

QWidget *w1 = new QWidget(this);
QWidget *w2 = new QWidget(this);
QWidget *w3 = new QWidget(this);

QWidget *w11 = new QWidget(this);
QWidget *w22 = new QWidget(this);
QWidget *w33 = new QWidget(this);


QWidget *w4 = new QWidget(this);
QWidget *w5 = new QWidget(this);

w->setStyleSheet("background-color:rgb(0,0,0);");

w1->setStyleSheet("background-color:rgb(255,0,0);");
w2->setStyleSheet("background-color:rgb(255,0,255);");
w3->setStyleSheet("background-color:rgb(0,255,0);");

w11->setStyleSheet("background-color:rgb(255,0,0);");
w22->setStyleSheet("background-color:rgb(255,0,255);");
w33->setStyleSheet("background-color:rgb(0,255,0);");

w4->setStyleSheet("background-color:rgb(0,0,255);");
w5->setStyleSheet("background-color:rgb(255,255,0);");

vLayout->addWidget(w1);
vLayout->addWidget(w2);
vLayout->addWidget(w3);

vLayout->addWidget(w11);
vLayout->addWidget(w22);
vLayout->addWidget(w33);

hLayout->addWidget(w4);
hLayout->addWidget(w5);

gridLayout->addWidget(w,0,0,2,2);
show();
}

Widget::~Widget()
{
//delete ui;
}

最佳答案

代码看起来并不那么糟糕。在我看来,您只需要调整 addWidget/addLayout 调用的参数即可。想想你的网格布局应该是什么样子,然后相应地选择参数。

我会像这样尝试:

// Desired grid layout is of size 2x2:
// .................
// . row0 . row0 .
// . col0 . col1 .
// .................
// . row1 . row1 .
// . col0 . col1 .
// .................

// Big widget at row 0, column 0
gridLayout->addWidget (w, 0, 0);

// "Horizontal group" at row 1, column 0
gridLayout->addLayout (hLayout, 1, 0);

// "Vertical group" at rows 0+1 (i.e. rowspan 2), column 1
gridLayout->addLayout (vLayout, 0, 1, 2, 1);

这样做会更好吗(我自己还没有尝试过)?

关于网格布局内的qt垂直和水平布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34658172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com