質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

デザイン

プログラミングでのデザインとは、プログラムの構成や、使用の信頼性・持続性・正確性・利便性の目標達成にはどうするのがベストなのか特定の選択を行うことです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Qt Creator

Qt Creatorは、Qtアプリケーションを開発するための開発統合環境(IDE)です。

Q&A

解決済

1回答

2151閲覧

Qtで釦やタブに画像を設定したい

micchi

総合スコア38

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

デザイン

プログラミングでのデザインとは、プログラムの構成や、使用の信頼性・持続性・正確性・利便性の目標達成にはどうするのがベストなのか特定の選択を行うことです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Qt Creator

Qt Creatorは、Qtアプリケーションを開発するための開発統合環境(IDE)です。

0グッド

0クリップ

投稿2020/04/06 04:37

Qt(C++)を始めたのですがデザインするのに色々はまり込んでいます
素人過ぎて申し訳ないのですが
釦やタブのアイコンを設定するのがわからなかったり
各パーツの色の設定や
動的にパーツ配置する際の方法がわかりません

1.アイコンの設定
QToolButtonやtabにアイコンを設定する方法がわかりません
QToolButtonにプログラム中で確保したアイコンのサイズが変更出来ません

//ツール釦 QToolButton *qp=new QToolButton(this); QIcon qi ; qi.addFile("C:\work\bottomBlue.png"); qp->iconSize().setWidth(320); //★反映されない qp->iconSize().setHeight(70); //★反映されない qp->setText("test"); qp->setIcon(qi); ui->toolButton->setIcon(qi);//最初から画面に配置した釦は設定したプロパティに従いちゃんとしたサイズで表示される

上記のようなソースで試したところ指定したサイズが反映されませんでした
もっと言うと、アイコンに文字を重なるように配置したいのですが
アイコンの上や下に配置は出来るようですが重ねる方法がわかりませんでした
labelかなんかを組み合わせた方がいいのでしょうか

2.タブに設定したアイコンが縦になる(サイズも変更出来ない)
同様にタブにそれぞれアイコンを設定したいのですがアイコンが縦になってしまいました(左横にタブを配置しています)
タブを横に配置する方法や、アイコンをタブ全体に埋め尽くすようにしたり、タブをもっと巨大化する方法は無いでしょうか

//タブ QIcon qicontab; qicontab.addFile("C:\work\yokoGreen.png"); //画面上に貼り付けたタブウィジェット ui->tabW->setTabIcon(0,qicontab); //アイコンが縦になってしまう

3.動的なパーツの配置
これはまだ試していないのですが、
画面上のパーツが起動するときに設定ファイルから読み込んで個数が変わるような設計を考えています
その時に例えば釦だったら
フォームのヘッダファイル(privateに宣言することになると思いますが)に

 QToolButton btn[100];

として宣言してcppファイルのコンストラクタのところで

//必要な分 btn[0] = new QToolButton(this);

と言うようにして実態を確保して座標や表示文字などを設定することを考えています
Qtとしてはこの様な考え方は会っていますか?
それとも何か決まったお作法のような物はあるのでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

QToolButtonやtabにアイコンを設定する方法がわかりません
アイコンの上や下に配置は出来るようですが重ねる方法がわかりませんでした

setIcon() でアイコンを設定した場合、アイコンの脇にテキストを表示することはできますが、重ねて表示することはできない仕様になっています。
画像をボタンの背景に設定したい場合、setStyleSheet() で background-image: url(<画像のパス>) で設定してください。

cpp

1ui->toolButton->setText("test"); 2ui->toolButton->setStyleSheet("background-image: url(:/sample.jpg)");

QToolButton にプログラム中で確保したアイコンのサイズが変更出来ません

size() が返すのは、参照ではないため、返ってきた一時オブジェクトに対して、高さや幅を設定しても、QToolButton のほうには反映されません。
代わりに setFixedSize() を使用して、サイズを指定してください。

cpp

1ui->toolButton->setFixedSize(320, 70);

タブに設定したアイコンが縦になる

縦になるという現象は確認できませんでした。
setTabIcon() で設定すると、タブ名の左にアイコンが表示されます。

cpp

1QIcon icon(":/qt.png"); 2ui->tabWidget->setTabIcon(0, icon);

イメージ説明

動的なパーツの配置

質問記載のやり方で問題ないと思います。

投稿2020/04/06 06:37

tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

micchi

2020/04/06 08:06

>QToolButtonやtabにアイコンを設定する方法がわかりません background-image: url(<画像のパス>)の指定をローカルファイルを指定する方法は無いでしょうか 画像ファイルがリソースでは無く他の場所から持ってきたファイルを使いたいので ``` qp->setStyleSheet("QToolButton{ background-image: url(file:///C:\work\bottomBlue.png);}"); qp->setStyleSheet("QToolButton{ background-color: rgba(0,0,0,0.5);color:red;}"); qp->setText("test"); ``` と言うようにしてみたのですが背景画像として認識されていないのか表示されませんでした >タブに設定したアイコンが縦になる すいません。情報が足りていなかったです。タブを通常のような上では無く左側に表示するようにしたところ縦になってしまいました 文字も縦になってしまったので無理にタブにするよりタブっぽい見かけで釦を並べるようにしてみます
tiitoi

2020/04/06 08:13 編集

> ローカルファイルを指定する方法は無いでしょうか ローカルファイルをリソースとして登録するのではだめなのでしょうか? 回答の画像もネットから持ってきたものです。
micchi

2020/04/06 08:57

使う場所毎にイメージファイルを余所から持ってきてファイルコピーして使う予定なのです Qtを始めたばかりなのでリソースファイルがまだわかっていないせいもあるのですがリソースとして指定したファイルがどこにいるか良くわかっていないのと(実行ファイルのフォルダにいないので・・) 実行ファイルに埋め込まれていると、実行環境毎に変更出来ないのでローカルのファイルが良いかなぁと思ってます
tiitoi

2020/04/06 09:15

今確認しましたが、絶対パスによる指定でも画像を読み込めましたよ。 background-image: url(<画像のパス>) Windows の場合は、\ は / に置き換えてください。 C:\hoge\sample.jpg -> C:/hoge/sample.jpg
micchi

2020/04/06 09:17

すいません。いただいた回答で大体欲しい回答は頂いているのでこちらは締めてしまって、別に質問を作ります ありがとうございます。
micchi

2020/04/06 09:18

\を/にしたら出来ました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問