반응형
QCheckBox
: 어떤 항목을 선택했는지 판단하기 위해 사용
선택된 상태 / 선택되지 않은 상태 / 이미 선택되어 있는 것처럼 보이게 하는 상태
stateChange() : QCheckBox 위젯의 상태를 변경할 수 있다.
isChecked() : 이 위젯이 체크되었는지 알 수 있다.
setTristate() : 파라미터 값으로 true 넘겨주면 된다.
-> 필수로 선택해야 하거나 디폴트로 선택되어 있는 것을 나타내는 방식
setIcon() : 아이콘을 추가할 수 있다.
<QCheckBox 위젯을 이용해 다중 선택하기>
예제 결과
두 번째 캡쳐사진처럼 Korean항목을 선택하면 아래와 같이 출력한다.
각 QCheckBox의 아이콘은 비주얼스튜디오 이미지를 캡쳐해서 썼다.... 이미지 구하기 귀찮았움... 허허
// mywidget.h
#include <QDialog>
class QCheckBox;
class QHBoxLayout;
class MyWidget : public QDialog
{
Q_OBJECT
public :
MyWidget();
private :
QCheckBox *checkbox1;
QCheckBox *checkbox2;
QCheckBox *checkbox3;
QCheckBox *checkbox4;
QHBoxLayout *layout;
private slots:
void eventChange();
// 체크박스 항목이 선택되었을 때, 이벤트 발생시키기 위해
};
// mywidget.cpp
#include <QtGui>
#include "mywidget.h"
MyWidget::MyWidget()
{
setFixedSize(500,100);
checkbox1 = new QCheckBox("Korean");
checkbox2 = new QCheckBox("English");
checkbox3 = new QCheckBox("Math");
checkbox4 = new QCheckBox("Science");
checkbox4->setTristate(true);
// 네 번째 상태가 자동으로 체크되도록-> 회색
static QIcon Img(QPixmap("./images/icon.png"));
checkbox1->setIcon(Img);
checkbox2->setIcon(Img);
checkbox3->setIcon(Img);
checkbox4->setIcon(Img);
// QCheckBox 위젯을 아이콘 이미지와 함께 사용하기 위해
connect(checkbox1, SIGNAL(clicked()), this, SLOT(eventChange()));
connect(checkbox2, SIGNAL(clicked()), this, SLOT(eventChange()));
connect(checkbox3, SIGNAL(clicked()), this, SLOT(eventChange()));
connect(checkbox4, SIGNAL(clicked()), this, SLOT(eventChange()));
layout = new QHBoxLayout;
layout->addWidget(checkbox1);
layout->addWidget(checkbox2);
layout->addWidget(checkbox3);
layout->addWidget(checkbox4);
setLayout(layout);
}
// QCheckBox 위젯을 선택하면 qDebug() 함수를 이용해
// 터미널에 QCheckBox위젯의 상태를 프린트한다.
void MyWidget::eventChange()
{
qDebug("------------------------------------");
// qDebug : 디벚깅에 유용한 함수
if(checkbox1->checkState())
{
qDebug("[Korean] checked.");
}
else
{
qDebug("[Korean] UnChecked.");
}
if(checkbox2->checkState())
{
qDebug("[English] checked.");
}
else
{
qDebug("[English] UnChecked.");
}
if(checkbox3->checkState())
{
qDebug("[Math] checked.");
}
else
{
qDebug("[Math] UnChecked.");
}
if(checkbox4->checkState())
{
qDebug("[Science] checked.");
}
else
{
qDebug("[Science] UnChecked.");
}
}
// main.cpp
#include <QApplication>
#include <QStyleFactory>
#include "mywidget.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyWidget widget;
QStringList styles = QStyleFactory::keys();
app.setStyle( styles[3] );
widget.show();
return app.exec();
}
반응형