사용자가 GUI 사용 시 특정한 Data에 대해 정보를 알려줄 수 있는 방법이 ToolTip 기능입니다.
ToolTip 기능이란 사용자에게 위젯 기능을 상기시키는 짧은 텍스트이고,

이벤트가 발생한 위치 바로 아래에 검정색-노란색 색상 조합으로 그려지는 텍스트 형식의 문자열입니다.

QWidget을 상속받은 클래스는 QWidget::setToolTip 함수를 이용하여 ToolTip을 설정할 수도 있고, Qt Designer에서도 경우에 따라 설정이 가능합니다. 이번 예제는 클릭 시 이벤트 발생시키는 Signal 및 이벤트를 수행할 Slot, showText() 함수를 이용해 구현하여 보았습니다.


TableView에 30*30개의 Cell을 만들어서 클릭 이벤트 마다 각각의 x, y 좌표를 ToopTip으로 표시하였습니다. 
ToolTip의 색상과 글꼴 디자인은 setPalette(), setFont() 함수를 이용하여 변경이 가능합니다. 

 

// 예제 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QStandardItemModel>
#include <QToolTip>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    void GridTableView();
    ~MainWindow();
 
private slots:
    void ToolTipInfo(QModelIndex);
 
private:
    Ui::MainWindow *ui;
    QStandardItemModel *gridmodel;
};
 
#endif // MAINWINDOW_H
 
 
// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    QObject::connect(ui->tableView, SIGNAL(clicked(QModelIndex)), this, SLOT(ToolTipInfo(QModelIndex)));
    GridTableView();
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::GridTableView()
{
    QModelIndex index;
    gridmodel = new QStandardItemModel(3030this);
    ui->tableView->setModel(gridmodel);
 
    for (int row = 0; row < 30; row++)
    {
        for (int col = 0; col < 30; col++)
        {
            index = gridmodel->index(row, col, QModelIndex());
            gridmodel->setData(index,"");
            ui->tableView->setColumnWidth(col, 30);
        }
            ui->tableView->setRowHeight(row, 30);
    }
}
 
void MainWindow::ToolTipInfo(QModelIndex index)
{
    QScreen *screen = QGuiApplication::primaryScreen();
    QPoint pos0 = QCursor::pos(screen);
    QString str;
 
    int x = index.column()+ 1;
    int y = index.row() + 1;
    str.sprintf("X pos: %d\nY pos: %d", x, y);
 
    QToolTip::showText(ui->tableView->mapFromParent(QPoint(pos0.x(),pos0.y())), str);
}

 

// Result Image