私は2つの数字(好き嫌い)の比率を作ろうとしています。
結果はパーセント単位の数値です。次に、ラベルからの幅をそのパーセントに等しくしたいと思います。
つまり、100のいいねと1つの嫌いがある場合。嫌いなラベルをいいねバーの幅の1%にしたい。つまり、基本的にはYouTubeの評価システムのようです。
画像の例:
しかし、ラベルの幅を設定する関数はありません。だから私はこれをどのように行う必要がありますか、誰かが提案を持っていますか?
QLabel::setFixedWidth(int)
。より柔軟にするために(レイアウトの変更について心配する必要はありません)、サブクラス化QWidget
し、2つの数値用のスロットを追加し、再実装paintEvent(..)
して2つのセクションを描画します。
うーん、私はただresize()メソッドを使用しています。たとえば、QLabelから実装された私のウィジェット:
BenchItem *itm=static_cast<BenchItem*>(widget);
itm->resize(this->width(),itm->height());
高さを変更する必要がないので、それ自体が高さを使用しますが、親のwidth()のために幅を変更する必要があります。
setGeometry()メソッドを使用して、QLabelの幅を動的に設定しました。フォームUiにqlabelがあります。
ui->qlabel->setGeometry(x, y, width, height);
QTドキュメントを見ると、この要素には次のものしか含めることができません
「プレーンテキスト、リッチテキスト、ピックスマップ、映画、数字、または何もない」
これらの中で最も有望な「ピックスマップ」には、必要な画像操作機能がないようですが、代わりに画像の表示について説明します。
http://qt-project.org/doc/qt-4.8/qpixmap.html
代わりに、CSSのように、棒グラフの問題に対してより軽量なソリューションを検討することをお勧めします。2つのdiv要素を使用してこれを行う方法は次のとおりです。
http://www.1080degrees.net/archive/journal/simple_css_bar_graph/
結局のところ画像を表示したい場合で、GDライブラリを有効にしている場合は、おそらくここをご覧ください。