「Qtのコントロール - ラベル」の版間の差分
ナビゲーションに移動
検索に移動
(→画像の表示) |
(→画像の表示) |
||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
<br><br> | |||
== クリック可能なQLabel == | |||
<code>QLabel</code>クラスは、リンクの選択時やホバー時にシグナルを送信するが、押下時はシグナルを送信しない。<br> | |||
<br> | |||
以下の例では、<code>QLabel</code>クラスを継承したサブクラスを作成して、<br> | |||
<code>QLabel</code>クラスの<code>mousePressEvent</code>メソッドをオーバーライドすることにより、ラベル押下時にシグナルを送信している。<br> | |||
<syntaxhighlight lang="c++"> | |||
// QClickableLabel.h | |||
class QClickableLabel : public QLabel | |||
{ | |||
Q_OBJECT | |||
public: | |||
explicit ClickableLabel(const QString &text="", QWidget* parent=0); | |||
virtual ~ClickableLabel(); | |||
signals: | |||
void clicked(); | |||
protected: | |||
void mousePressEvent(QMouseEvent* event); | |||
}; | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// QClickableLabel.cpp | |||
ClickableLabel::ClickableLabel(const QString &text, QWidget* parent) : QLabel(text, parent) | |||
{ | |||
} | |||
void ClickableLabel::mousePressEvent(QMouseEvent* event) | |||
{ | |||
emit clicked(); | |||
} | |||
ClickableLabel::~ClickableLabel() | |||
{ | |||
} | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
2021年2月2日 (火) 00:59時点における版
概要
クリック可能なQLabel
QLabel
クラスは、リンクの選択時やホバー時にシグナルを送信するが、押下時はシグナルを送信しない。
以下の例では、QLabel
クラスを継承したサブクラスを作成して、
QLabel
クラスのmousePressEvent
メソッドをオーバーライドすることにより、ラベル押下時にシグナルを送信している。
// QClickableLabel.h
class QClickableLabel : public QLabel
{
Q_OBJECT
public:
explicit ClickableLabel(const QString &text="", QWidget* parent=0);
virtual ~ClickableLabel();
signals:
void clicked();
protected:
void mousePressEvent(QMouseEvent* event);
};
// QClickableLabel.cpp
ClickableLabel::ClickableLabel(const QString &text, QWidget* parent) : QLabel(text, parent)
{
}
void ClickableLabel::mousePressEvent(QMouseEvent* event)
{
emit clicked();
}
ClickableLabel::~ClickableLabel()
{
}
画像の表示
以下の例では、ラベルに画像を埋め込んでいる。
mainwindow.uiファイルにLabelコントロールを配置している。
また、画像を表示するために、QPixmp
をインクルードする必要がある。
// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPixmap>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
QPixmap pix("<画像ファイルのパス>");
ui->label->setPixmap(pix);
}
MainWindow::~MainWindow()
{
delete ui;
}
また、Labelコントロールに埋め込む画像を拡大表示するには、以下のように記述する。
// 変更前
ui->label->setPixmap(pix);
// 変更後
ui->label->setPixmap(pix.scaled(<横のピクセル>, <縦のピクセル>));