「Qtのコントロール - ラベル」の版間の差分

ナビゲーションに移動 検索に移動
130行目: 130行目:
以下の例では、ラベルに画像を埋め込んでいる。<br>
以下の例では、ラベルに画像を埋め込んでいる。<br>
<br>
<br>
mainwindow.uiファイルにLabelコントロールを配置している。<br>
mainwindow.uiファイルにラベルコントロールを配置している。<br>
また、画像を表示するために、<code>QPixmp</code>をインクルードする必要がある。<br>
また、画像を表示するために、<code>QPixmp</code>をインクルードする必要がある。<br>
  <syntaxhighlight lang="c++">
  <syntaxhighlight lang="c++">
153行目: 153行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
また、Labelコントロールに埋め込む画像を拡大表示するには、以下のように記述する。<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>


案内メニュー