ブログ

Qtサンプル:LCDタッチパネルでタッチした位置を表示する

at_kazutaka.bito
2015年2月1日 21時29分

Armadillo-440液晶開発セットで、Qtを使ってLCDタッチパネルにタッチした位置を表示するサンプルプログラム。 Qtの開発環境については、下記URLを参考

参考URL)

  • Howto : Armadillo-440でQt! 第2回
    • http://armadillo.atmark-techno.com/howto/armadillo-440-qt-2
  • Howto : Armadillo-440でQt! 第3回
    • http://armadillo.atmark-techno.com/howto/armadillo-440-qt-3

以下、Howto : Armadillo-440でQt! 第3回を最後まで実行したQtCreatorのプロジェクトを使う。 mainwindow.hとmainwindow.cppを以下のように変更する。(追加箇所には、/ /でコメントしてある。) ビルドして実行すると、Mainwindow上にLCDにタッチした位置が"(258, 170)"のように表示される。

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QMouseEvent>  /* add: QMouseEvent */
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
protected:
    void mousePressEvent(QMouseEvent *event);  /* add: mousePressEvent */
    void paintEvent(QPaintEvent *event);  /* add: paintEvent */
 
private:
    Ui::MainWindow *ui;
    QString str_xy; /* add: string (x, y) */
};
 
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>  /* add QtGui */
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
/* add: mousePressEvent */
void MainWindow::mousePressEvent(QMouseEvent *event)
{
    QString x;
    QString y;
    str_xy = "(" + x.setNum(event->x()) + " ," + y.setNum(event->y()) + ")";
    update();
}
 
/* add paintEvent */
void MainWindow::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.drawText(100, 100, 100, 50, Qt::AlignLeft, str_xy);
}

概要

  • QString str_xy; /* add: string (x, y) */
    • LCDタッチパネルをタッチした位置を文字列化したもの
  • void mousePressEvent(QMouseEvent event); / add: mousePressEvent */
    • LCDタッチパネルにタッチしたイベントで実行される
    • 座標は、   X座標:event->x()   Y座標:event->y()  で取得できる。
    • XY座標を文字列でstr_xyに設定し、updateでLCDの表示内容を更新する。
  • void paintEvent(QPaintEvent event); / add: paintEvent */
    • 上述のXY座標の文字列str_xyをLCDに表示。