본문 바로가기
C++ 200제/코딩 IT 정보

[Qt프로그래밍] GridView 꾸미기 (Qt로 바둑판 만들기)

by vicddory 2017. 7. 28.

[Qt프로그래밍] GridView 꾸미기 (Qt로 바둑판 만들기)


Qt프로그래밍에선 C# GridView 만들 때와 똑같이 QTableView를 사용합니다. C#과 이름은 다르지만, 용도나 사용 방법은 거의 같아요. 


GridView 크기는 아래 화면처럼 속성 창에서 조절할 수 있습니다. Qt프로그래밍이 C#보단 조금 불편한 게 있다면, C# 처럼 GridView UI 속성 창에선 이 이상으로 GridView 아이템들을 초기화할 수 없다는 것입니다. 일일이 손으로 코딩해야 합니다. (Qt프로그래밍도 나름 편한 측에 속하지만 C#은 압도적입니다)


이어서, 헤더 파일을 살펴보죠. GridView 안에 항목, 즉, 데이터를 넣으려면 QStandardItemModel 객체를 사용합니다.


Qt프로그래밍 GridView[[Qt프로그래밍] GridView 꾸미기 (Qt로 바둑판 만들기)]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QStandardItemModel>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private:
    Ui::MainWindow *ui;
 
private:
    QStandardItemModel *model_;
};
 
#endif // MAINWINDOW_H
cs


위와 같이 QStandardItemModel 객체를 생성하면, GridView에 들어갈 아이템들을 설정할 수 있습니다.


이어서 cpp 파일을 살펴봅니다. Qt프로그래밍 코드 양은 C#보다 조금 늘었지만, 꽤 간단하죠.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),
    model_(new QStandardItemModel(1016this))
{
    ui->setupUi(this);
 
    ui->table_view_->setModel(model_);
 
    for (int row = 0; row < 10; row++) {
        for (int col = 0; col < 16; col++) {
            QModelIndex index = model_->index(row, col, QModelIndex());
            model_->setData(index, 0);
 
            ui->table_view_->setColumnWidth(col, 20);
        }
 
        ui->table_view_->setRowHeight(row, 20);
    }
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
cs

 

코드의 양이 많지 않네요. (Qt프로그래밍은 코드가 간단한게 특징)


- QStandardItemModel은 10행 16열로 설정

- for 문을 통해서 10행 16열에 0이란 데이터가 삽입

- setData()란 함수는 인자로 인덱스와 값을 받음


이정도만 봐두면 다 분석한 것이나 다름 없습니다. 아주 간단하죠. Qt프로그래밍 어렵지 않아요. 이 간단한 코드를 실행시키면 아래처럼 결과를 확인할 수 있어요.


grid_pattern[[Qt프로그래밍] GridView 꾸미기 (Qt로 바둑판 만들기)]


선택되지 않게 하거나, 값에 제한을 두거나... 기타 등등, 추가 구현 사항들은 QStandardItemModel의 속성을 중심으로 파악하면 됩니다..


다만, setModel(QAbstractItemModel *) 함수는 Qt4에선 접근이 안 됩니다. Qt프로그래밍으로 Qt4를 사용하는 유저라면 이 코드는 사용할 수 없다는 뜻이죠.


[Qt프로그래밍] GridView 꾸미기 (Qt로 바둑판 만들기)

댓글