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

+ Recent posts