12,951
回編集
(→画像の表示) |
(→画像の表示) |
||
130行目: | 130行目: | ||
以下の例では、ラベルに画像を埋め込んでいる。<br> | 以下の例では、ラベルに画像を埋め込んでいる。<br> | ||
<br> | <br> | ||
mainwindow. | mainwindow.uiファイルにラベルコントロールを配置している。<br> | ||
また、画像を表示するために、<code>QPixmp</code>をインクルードする必要がある。<br> | また、画像を表示するために、<code>QPixmp</code>をインクルードする必要がある。<br> | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
153行目: | 153行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
また、ラベルコントロールに埋め込む画像を拡大表示するには、以下のように記述する。<br> | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
// 変更前 | // 変更前 | ||
161行目: | 161行目: | ||
ui->label->setPixmap(pix.scaled(<横のピクセル>, <縦のピクセル>)); | ui->label->setPixmap(pix.scaled(<横のピクセル>, <縦のピクセル>)); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | |||
ラベルコントロールに埋め込む画像サイズは、ラベルのサイズ変更に自動的に対応する。<br> | |||
<syntaxhighlight lang="c++"> | |||
std:unique_ptr<QLabel> Label = std::make::unique<QLabel>(); | |||
label->setPixmap(style()->standardPixmap(QStyle::SP_TitleBarMenuButton)); | |||
// trueを指定する場合、縦横比を無視してラベルのサイズ限界まで画像を表示する | |||
label->setScaledContents(false); | |||
</syntaxhighlight> | |||
<br> | |||
==== 画像の伸縮 ==== | |||
<code>QPixmap</code>クラスを使用することで、縦横比を保ってサイズを変更することができる。<br> | |||
<br> | |||
以下の例では、まず、ラベルコントロールに画像を割り当てている。<br> | |||
<syntaxhighlight lang="c++"> | |||
QLabel *label = new QLabel; | |||
label->setFixedSize(150, 150); | |||
label->setAlignment(Qt::AlignLeft | Qt::AlignTop); | |||
label->setStyleSheet("background:violet;"); | |||
// ラベルコントロールに画像を設定する4つの方法 | |||
QPixmap pixmap = QPixmap(":/images/cat.jpg"); | |||
label->setPixmap(pixmap); // 原画像のサイズで表示する | |||
label->setPixmap(pixmap.scaled(150, 150)); // 縦横のサイズを指定する | |||
label->setPixmap(pixmap.scaledToHeight(150)); // 縦のみを指定する(縦横比を保って横も自動的に伸縮する) | |||
label->setPixmap(pixmap.scaledToWidth(150)); // 横のみを指定する(縦横比を保って縦も自動的に伸縮する) | |||
</syntaxhighlight> | |||
<br> | |||
==== ラベルの背景画像 ==== | |||
QSSを使用することより、背景の色と画像のタイル表示ができる。<br> | |||
<br> | |||
テキストや表示位置は、setTextやsetAlignmentで設定する。<br> | |||
no-repeatを省略する場合、タイル表示になる。<br> | |||
background-sizeは指定できない。<br> | |||
<syntaxhighlight lang="c++"> | |||
label->setStyleSheet("font-weight:bold;" | |||
"background:skyblue url(:/images/close-hover.gif) no-repeat;"); | |||
</syntaxhighlight> | |||
<br> | |||
ボックスタイプのウィジェットは、同様に背景を設定することができる。<br> | |||
QSSの詳細は、装飾とスタイルを参照すること。<br> | |||
<br><br> | <br><br> | ||