반응형

테스트 환경


Windows10 / C++ / Qt 5.15.2 / Qt creator 4.13.3

 

 

목적


Qt Creator를 활용, 테이블위젯에서 체크박스를 사용한다.

 

 

테이블 위젯 만들기


테이블 위젯을 생성한다.

mainwindow.ui를 더블클릭 후 Table Widget을 ui로 드래그한다.

 

 

 

 

 

 

만들어진 테이블위젯을 더블클릭 후 아래 +아이콘을 선택하여 열을 두 개 추가한다.

 

 

 

 

 

 

테이블위젯의 객체 이름은 기본값인 tableWidget이다.

 

 

 

 

Run을 실행하여 ui를 갱신한 후 나타난 프로그램 창을 닫는다.

 

 

 

 

테이블위젯에 체크박스 만들기


테이블위젯에 체크박스가 있는 행을 추가한다.

Edit->Headers->mainwindow.h로 이동하여 아래 코드를 추가한다.

#include <QTableWidgetItem>

 

 

 

 

 

 

Edit->Sources->mainwindow.cpp로 이동한다.

 

 

 

MainWindow 함수 내에 아래 코드를 입력한다.

ui->tableWidget->insertRow(ui->tableWidget->rowCount());
ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,0, new QTableWidgetItem("Test"));
QTableWidgetItem *checkBoxItem = new QTableWidgetItem();
checkBoxItem->setCheckState(Qt::Unchecked);
ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,1, checkBoxItem);

insertRow(n-1)은 테이블위젯에 n번째 행을 추가한다. 이때 n-1을 rowCount함수를 사용하여 현재까지 생성된 행 다음 행을 추가한다.

setItem(행, 열, 내용)을 통해 테이블위젯 각 행과 열에 내용을 입력한다. 이때 checkBoxItem을 사용하여 테이블위젯에 체크박스를 삽입할 수 있다.

 

 

 

 

 

 

테이블위젯의 체크박스 변경 이벤트 확인


mainwindow.ui로 이동하여 테이블위젯을 우클릭한 후 Go to slot을 선택한다.

 

 

 

Go to slot 창에서 itemChanged를 선택하여 테이블위젯의 아이템(셀)이 바뀌면 on_tableWidget_itemChanged(QTableWidgetItem *item) 함수가 실행될 수 있게 한다. on_tableWidget_itemChanged(QTableWidgetItem *item) 함수는 mainwindow.cpp에 자동 생성된다.

 

 

 

 

on_tableWidget_itemChanged(QTableWidgetItem *item) 함수를 수정한다.

테이블위젯의 0행 1열의 체크박스가 체크로 바뀌면 checked를 출력하고 언체크로 바뀌면 unchecked를 출력한다.

void MainWindow::on_tableWidget_itemChanged(QTableWidgetItem *item)
{
    if(item->column() == 1 && item->row() == 0)
    {
        if(item->checkState() == Qt::Checked)
        {
            qDebug() << "Checked";
        }
        else
        {
            qDebug() << "Unchecked";
        }
    }
}