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 |