12,964
回編集
編集の要約なし |
|||
200行目: | 200行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
ただし、<code>focusInEvent</code>メソッドおよび<code>focusOutEvent</code>メソッドのオーバーライドでは、<br> | |||
各ラインエディットでフォーカスインおよびフォーカスアウトの処理が異なる場合は煩雑となる。<br> | |||
<br> | |||
各ラインエディットにて、異なるフォーカスイベントの処理を記述する場合、シグナルを作成する。<br> | |||
<br> | |||
以下の例では、各ラインエディットの外部から、フォーカスイベントを取得している。<br> | |||
動作結果は、上記のサンプルコードと同様である。<br> | |||
<syntaxhighlight lang="c++"> | |||
// QLineEditEx.cpp | |||
#include "QLineEditEx.h" | |||
QLineEditEx::QLineEditEx(QWigedt *parent) : QLineEdit(parent) | |||
{ | |||
} | |||
void QLineEditEx::focusInEvent(QFocusEvent *e) | |||
{ | |||
QLineEdit::focusInEvent(e); | |||
emit focused(true); | |||
} | |||
void QLineEditEx::focusOutEvent(QFocusEvent *e) | |||
{ | |||
QLineEdit::focusOutEvent(e); | |||
emit focused(false); | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// QLineEditEx.h | |||
#pragma once | |||
#include <QWigedt> | |||
#include <QLineEdit> | |||
class QLineEditEx : public QLineEdit | |||
{ | |||
Q_OBJECT | |||
public: | |||
explicit QLineEditEx(QWigedt *parent = nullptr); | |||
protected: | |||
void focusInEvent(QFocusEvent *) override; | |||
void focusOutEvent(QFocusEvent *) override; | |||
signals: | |||
void focused(bool); | |||
}; | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// MainWindow.cpp | |||
#include "MainWindow.h" | |||
#include "ui_MainWindow.h" | |||
MainWindow::MainWindow(QMainWindow *parent) : QMainWindow(parent), ui(new Ui::Widget) | |||
{ | |||
ui->setupUi(this); | |||
connect(ui->lineEdit, &QLineEditEx::focused, this, &MainWindow::focusEvent); | |||
} | |||
MainWindow::~MainWindow() | |||
{ | |||
delete ui; | |||
} | |||
void MainWindow::focusEvent(bool focused) | |||
{ | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// MainWindow.h | |||
#pragma once | |||
#include <QMainWindow> | |||
namespace Ui {class MainWindow;} | |||
class MainWindow : public QMainWindow | |||
{ | |||
Q_OBJECT | |||
public: | |||
explicit MainWindow(QMainWindow *parent = nullptr); | |||
~MainWindow(); | |||
private: | |||
Ui::MainWindow *ui; | |||
private slots: | |||
void focusEvent(bool); | |||
}; | |||
</syntaxhighlight> | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:Qt]] | [[カテゴリ:Qt]] |