티스토리 뷰

목차

    반응형

    [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로 바둑판 만들기)

    반응형