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