사용자가 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(30, 30, this);
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
'Qt' 카테고리의 다른 글
QTableView에 CheckBox 및 ComboBox 삽입하기 (0) | 2020.02.21 |
---|---|
Qt Cross Compile 설정 (64-bit to 32-bit System) (3) | 2020.02.19 |
QSettings Class 프로그램 설정 값 저장하기 (2) | 2020.02.12 |
QProcess Class 외부 프로그램 출력 값 가져오기 (0) | 2020.02.10 |
QLibrary Class 동적 라이브러리 동적 로드하기 (1) | 2020.02.07 |