티스토리 뷰
QAction 클래스는 메뉴, 툴바버튼, 단축키에 대한 처리를 일원화하는 도구로 QObject 클래스를 상속받는다. 많은 UI 관련 클래스들이 QWidget 클래스를 상속받고 QWidget에 addAction 메서드를 정의하고 있지만 해당 액션이 메뉴나 툴바 등에만 유효하므로 주의한다.
참조 링크 : https://doc.qt.io/qt-5/qaction.html
ico_t.load(":/images/new.png");
QAction *actNew = new QAction(QPixmap::fromImage(ico_t),_("New"),this);
actNew->setShortcut(Qt::CTRL+Qt::Key_N);
actNew->setToolTip(_("New Project"));
connect(actNew, SIGNAL(triggered()), this, SLOT(OnNewProjectMenu()));
ico_t.load(":/images/open.png");
QAction *actOpen = new QAction(QPixmap::fromImage(ico_t),_("Open"),this);
actOpen->setShortcut(Qt::CTRL+Qt::Key_O);
actOpen->setToolTip(_("Open Project"));
connect(actOpen, SIGNAL(triggered()), this, SLOT(OnOpenProjectMenu()));
QMenu *mn_file = menuBar()->addMenu(_("&File"));
mn_file->addAction(actNew);
mn_file->addAction(actOpen);
QToolBar *toolBar = new QToolBar(_("File toolbar"), this);
addToolBar(Qt::TopToolBarArea, toolBar);
toolBar->addAction(actNew);
toolBar->addAction(actOpen);
위의 코드는 액션을 정의하면서 해당 액션에 대한 단축키를 지정하고 액션을 툴바와 메뉴에 추가하여 단축키를 누르거나, 메뉴를 선택하거나 툴바 버튼을 눌러도 동일하게 액션의 triggered() 시그널에 따라 지정한 슬롯으로 연결된다.
예제처럼 액션을 생성하면서 아이콘과 텍스트를 한 번에 지정할 수도 있고 다음과 같은 메서드를 통해 추가 정보를 지정할 수도 있다.
QString text() const
void setText(const QString &text) : 텍스트 조회 및 지정
QIcon icon() const
void setIcon(const QIcon &icon) : 아이콘 조회 및 지정
QList<QKeySequence> shortcuts() const
void setShortcuts(const QList<QKeySequence> &shortcuts)
QKeySequence shortcut() const
void setShortcuts(QKeySequence::StandardKey key) : 단축키/단축키 목록 조회 지정
QString toolTip() const
void setToolTip(const QString &tip) : 툴팁 조회 및 지정
bool isCheckable() const
void setCheckable(bool) : on/off 상태를 가질 수 있는지 조회 및 지정
bool isChecked() const
void setChecked(bool) : on/off 상태 조회 및 지정

'C | C++' 카테고리의 다른 글
| QTextEdit 클래스(QT C++) (0) | 2024.03.07 |
|---|---|
| C++ 정규식(std::regex) 사용하기 (0) | 2024.03.07 |
| QMenu 클래스(QT C++) (0) | 2024.03.06 |
| QGridLayout 클래스(QT C++) (0) | 2024.02.21 |
| QLineEdit 클래스(QT C++) (0) | 2024.02.21 |