본문 바로가기

QT/QLayout

[C++, QT] QGridLayout 에 위젯 배치

mainwindow.h

더보기

 

#ifndef MAINWINDOW_H

#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE

namespace Ui { class MainWindow; }

QT_END_NAMESPACE

class MainWindow : public QMainWindow

{

Q_OBJECT
public: MainWindow(QWidget *parent = nullptr);

~MainWindow();
private: Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

 

mainwindow.cpp

더보기
#include "mainwindow.h"

#include "ui_mainwindow.h"

#include <QGridLayout>

#include <QLabel>
void test1(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3);

void test2(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3);

void test3(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3);

void test4(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3);

void test5(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3);


MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow)

{

ui->setupUi(this);
QGridLayout * main_layout = new QGridLayout;

ui->centralwidget->setLayout(main_layout);

QLabel * lbl1 = new QLabel("lbl1");

QLabel * lbl2 = new QLabel("lbl2");

QLabel * lbl3 = new QLabel("lbl3");


lbl1->setStyleSheet("background-color:green");

lbl2->setStyleSheet("background-color:green");

lbl3->setStyleSheet("background-color:green");



// 글자 가운데 정렬
lbl1->setAlignment(Qt::AlignCenter);

lbl2->setAlignment(Qt::AlignCenter);

lbl3->setAlignment(Qt::AlignCenter);

// test1(main_layout, lbl1, lbl2, lbl3);

// test2(main_layout, lbl1, lbl2, lbl3);

// test3(main_layout, lbl1, lbl2, lbl3);

// test4(main_layout, lbl1, lbl2, lbl3);

test5(main_layout, lbl1, lbl2, lbl3); }

void test1(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3)

{

main_layout->addWidget(lbl1);

main_layout->addWidget(lbl2);

main_layout->addWidget(lbl3);

}


void test2(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3)

{

main_layout->addWidget(lbl1, 0, 0);

main_layout->addWidget(lbl2, 1, 0);

main_layout->addWidget(lbl3, 2, 0);

}


void test3(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3)

{

main_layout->addWidget(lbl1, 0, 0);

main_layout->addWidget(lbl2, 0, 1);

main_layout->addWidget(lbl3, 0, 2);

}


void test4(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3)

{

main_layout->addWidget(lbl1, 0, 0);

main_layout->addWidget(lbl2, 1, 1);

main_layout->addWidget(lbl3, 2, 2);

}


void test5(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3)

{

main_layout->addWidget(lbl1, 0, 0);

main_layout->addWidget(lbl2, 0, 1);

main_layout->addWidget(lbl3, 1, 1);

}


MainWindow::~MainWindow() { delete ui; }



 

 

예제 1)

void test1(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3)

{

main_layout->addWidget(lbl1);

main_layout->addWidget(lbl2);

main_layout->addWidget(lbl3);

}

// 따로 위치 지정을 하지 않고 위젯 추가 시 세로 순으로 위젯이 추가 됨.

 

 

 

예제 2)

void test2(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3)

{

main_layout->addWidget(lbl1, 0, 0);

main_layout->addWidget(lbl2, 1, 0);

main_layout->addWidget(lbl3, 2, 0);

}

// 위치 지정 

(0, 0)
(1, 0)
(2, 0)

 

 

예제 3)

void test3(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3)

{

main_layout->addWidget(lbl1, 0, 0);

main_layout->addWidget(lbl2, 0, 1);

main_layout->addWidget(lbl3, 0, 2);

}

// 위치 지정

(0, 0) (0, 1) (0, 2)

 

 

예제 4)

void test4(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3)

{

main_layout->addWidget(lbl1, 0, 0);

main_layout->addWidget(lbl2, 1, 1);

main_layout->addWidget(lbl3, 2, 2);

}

// 위치 지정

(0, 0)    
  (1, 1)  
    (2, 2)

 

 

예제 5)

void test5(QGridLayout * main_layout, QLabel * lbl1, QLabel * lbl2, QLabel * lbl3)

{

main_layout->addWidget(lbl1, 0, 0);

main_layout->addWidget(lbl2, 0, 1);

main_layout->addWidget(lbl3, 1, 1);

}

// 위치 지정

(0, 0) (0, 1)
  (1, 1)