Qt

[Qt] 현재 시간 들고오기

_minit 2024. 10. 16. 16:02

Qt Creator에서 버튼을 누르면 현재 시간을 가져와 라벨에 출력하는 걸 만들어보자.

현재 시간을 가져오려면 QDateTime이라는 헤더 파일이 필요하다.

아래는 현재 시간을 가져오는 기본 코드이다.

#include <QDateTime>
QString currentTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");

 

void onButtonClicked(QLabel *label) {
    QString currentTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
    label->setText(currentTime);
    std::cout << "Button clicked! Current time: " << currentTime.toStdString() << std::endl;
}

버튼을 눌렀을 때 라벨의 text가 현재 시간과 됨과 함께 출력도 되도록 만들었다.

QObject::connect(&button, &QPushButton::clicked, [&label]() { onButtonClicked(&label); });

이벤트는 이렇게 구현하였다.

 

#include <QApplication>
#include <iostream>
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QFont>
#include <QObject>
#include <QLineEdit>
#include <QPalette>
#include <QDateTime>

void onButtonClicked(QLabel *label){
    QString currentTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
    label->setText(currentTime);
    std::cout << "Button clicked! Current time: " << currentTime.toStdString() << std::endl;
}

void setFont(QWidget *name, int size){
    QFont font = name->font();
    font.setPointSize(size);
    name->setFont(font);
}

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget window;
    QPalette palette = window.palette();
    palette.setColor(QPalette::Window, Qt::lightGray);
    // window.setAutoFillBackground(true);
    window.setPalette(palette);
    window.resize(1280, 720);              // window size
    window.setWindowTitle("Empty window");  // widow name

    QLabel label("Minit blog!", &window);   // text
    label.move(50, 50);                   // text position
    label.resize(600, 200);
    label.setWordWrap(true);
    setFont(&label, 20);

    QPushButton button("Button", &window);  // button
    button.move(300, 50);                  // button position
    button.resize(200, 200);                // button size
    setFont(&button, 20);

    QObject::connect(&button, &QPushButton::clicked, [&label]() { onButtonClicked(&label); }); // button click event

    QLineEdit inputfield(&window);
    inputfield.setPlaceholderText("기본 text"); // placeholder text
    inputfield.move(600, 50);             // input text position
    inputfield.resize(200, 200);            // input text size
    setFont(&inputfield, 20);


    window.show();

    return app.exec();
}

라벨이 잘리긴 하지만 어쩔 수 없다. (해결방법을 모름) 해결방안 알고 계시면 알려주세요..

또한 콘솔 창에도 현재 시각이 나오게 된다.

728x90

'Qt' 카테고리의 다른 글

[Qt] qmake란?  (0) 2024.10.16
[Qt] 배경색 변경  (0) 2024.10.16
[Qt] 텍스트 입력란  (0) 2024.10.16
[Qt] 버튼 클릭 이벤트  (1) 2024.10.16
[Qt] 버튼 만들기  (0) 2024.10.16