테스트 환경
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";
}
}
}
최근댓글