티스토리 뷰
목차
[Qt프로그래밍] GridView 꾸미기 (Qt로 바둑판 만들기)
Qt프로그래밍에선 C# GridView 만들 때와 똑같이 QTableView를 사용합니다. C#과 이름은 다르지만, 용도나 사용 방법은 거의 같아요.
GridView 크기는 아래 화면처럼 속성 창에서 조절할 수 있습니다. Qt프로그래밍이 C#보단 조금 불편한 게 있다면, C# 처럼 GridView UI 속성 창에선 이 이상으로 GridView 아이템들을 초기화할 수 없다는 것입니다. 일일이 손으로 코딩해야 합니다. (Qt프로그래밍도 나름 편한 측에 속하지만 C#은 압도적입니다)
이어서, 헤더 파일을 살펴보죠. GridView 안에 항목, 즉, 데이터를 넣으려면 QStandardItemModel 객체를 사용합니다.
[[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(10, 16, this)) { 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프로그래밍 어렵지 않아요. 이 간단한 코드를 실행시키면 아래처럼 결과를 확인할 수 있어요.
[[Qt프로그래밍] GridView 꾸미기 (Qt로 바둑판 만들기)]
선택되지 않게 하거나, 값에 제한을 두거나... 기타 등등, 추가 구현 사항들은 QStandardItemModel의 속성을 중심으로 파악하면 됩니다..
다만, setModel(QAbstractItemModel *) 함수는 Qt4에선 접근이 안 됩니다. Qt프로그래밍으로 Qt4를 사용하는 유저라면 이 코드는 사용할 수 없다는 뜻이죠.
[Qt프로그래밍] GridView 꾸미기 (Qt로 바둑판 만들기)