6

同じサイズと配置プロパティを持つ a のQLabelすぐ下にあります。QLineEdit

QLineEdit *lineEdit = new QLineEdit("999");
lineEdit->setFixedWidth(100);
lineEdit->setAlignment(Qt::AlignRight);
//
QLabel *label = new QLabel("999");
label->setFixedWidth(100);
label->setAlignment(Qt::AlignRight);
//
QLayout *layout = new QVBoxLayout;
layout->addWidget(lineEdit);
layout->addWidget(label);

これがレンダリングされる方法は次のとおりです。

ここに画像の説明を入力

label一番下のテキストを のテキストに正確に右寄せするにはどうすればよいlineEditですか?

lineEditすべてのプラットフォームで機能し、とでフォント サイズが異なる場合でも機能するソリューションを見つけた場合は、完全な賞を受賞しlabelます。

4

2 に答える 2

4

QLineEditaと aを使用する代わりに、QLabel2 つの QLineEdit を使用できますか?

次の点を考慮してください。

QWidget* widget = new QWidget();
// Original line edit
QLineEdit *lineEdit1 = new QLineEdit("999");
lineEdit1->setFixedWidth(100);
lineEdit1->setAlignment(Qt::AlignRight);
lineEdit1->setStyleSheet("border-width: 2px;");
// A suggestion if you want a label
QLabel *label = new QLabel("999");
label->setFixedWidth(100);
label->setAlignment(Qt::AlignRight);
label->setStyleSheet("border: 2px solid rgba(255, 0, 0, 0%)");
// Alternatively if you can use another QLineEdit
QLineEdit *lineEdit2 = new QLineEdit("999");
lineEdit2->setFixedWidth(100);
lineEdit2->setAlignment(Qt::AlignRight);
lineEdit2->setReadOnly(true);
lineEdit2->setStyleSheet("background: rgba(0, 0, 0, 0%);  "
                         "border-width: 2px;              "
                         "border-style: solid;            "
                         "border-color: rgba(0, 0, 0, 0%);");
// Bring it all together
QLayout *layout = new QVBoxLayout(widget);
layout->addWidget(lineEdit1);
layout->addWidget(label);
layout->addWidget(lineEdit2);
widget->show();

すべての境界線を強制的に 2px にするため、異なるプラットフォームでも同じにする必要があります。2 番目QLineEditは と異なって見えるべきではありませんQLabel(テキストの色はラベルの色よりも少し暗く見えますが、元の編集と一致するため、これは良いことかもしれません)。

QLineEditの代わりにを使用することの追加の利点はQLabel、値が選択可能になったことです...

免責事項: Linux でのみテストしており、ピクセル レベルの比較は行っていません。

編集:フォントサイズが異なると配置が失敗することがわかります。

于 2016-04-29T06:45:23.097 に答える