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に表示。