728x90
사용자에게 어떤 입력을 받을 때 Validator나 InputMask로 제한을 둘 수 있습니다. 그리고 그 제한된 값에 대한 정보를 사용자에게 알려주어야 합니다. 그 정보를 ToolTip으로 제공할 수 있습니다.
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QIntValidator* pValidator = new QIntValidator(0,1000);
ui->lineEdit->setValidator(pValidator);
ui->lineEdit->setToolTip("Input Value : 0 ~ 1000");
}
MainWindow::~MainWindow()
{
delete ui;
}
Widget에 ToolTip을 등록하면 위와 같이 메시지를 보여주게 됩니다. 하지만 보는것처럼 약간에 딜레이가 발생하게 되는데 이런 딜레이를 최소화하려면 QToolTip::ShowText()를 사용하면 됩니다.
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
bool eventFilter(QObject *, QEvent * event);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolTip>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QIntValidator* pValidator = new QIntValidator(0,1000);
ui->lineEdit->setValidator(pValidator);
ui->lineEdit->installEventFilter(this);
}
bool MainWindow::eventFilter(QObject* obj, QEvent* event)
{
if ( event->type() == QEvent::MouseMove ) {
QPoint currentPos = QCursor::pos();
QToolTip::showText(currentPos, "Input Value : 0 ~ 1000");
}
return QObject::eventFilter(obj, event);
}
MainWindow::~MainWindow()
{
delete ui;
}
위와 같이 해당 QWidget에 InstallEventFilter를 해주고 mouseevent가 발생했을 때의 마우스 좌표를 가져와서 띄워주게 됩니다. 이렇게 하면 SetToolTip을 사용했을 때보단 빠르게 ToolTip을 띄워주게 됩니다.
728x90
'Programming > Qt' 카테고리의 다른 글
Qt Grid Layout addWidget 시 Span 조절 (0) | 2022.09.01 |
---|---|
Qt Creator white space 표시 제거 (0) | 2022.01.18 |
Qt LineEdit 입력 값 제한하기 (0) | 2021.05.07 |
Qt wkhtmltopdf로 컨버팅 시 테이블에 빈 공간 출력되는 증상 해결법 (0) | 2021.04.28 |
Qt for Desktop (cmd 창) doskey로 명령어 등록해 사용하기 (0) | 2021.04.05 |