你能代替使用QLineEdit
和QLabel
使用两个QLineEdits的?
考虑以下几点:
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的,所以在不同的平台应该是相同的。第二QLineEdit
不应该看不同的比QLabel
(文字颜色看起来比标签稍深,虽然,这可能是一件好事,因为它原来的编辑匹配)
使用QLineEdit
,而不是额外的好处QLabel
是价值现在可以选择...
免责声明:我只在Linux上进行过测试,我还没有做过像素级比较。
编辑:我看到对齐失败,不同的字体大小。
正如你所看到的,'QLineEdit'使用从边界到文本的分隔符空间(非常类似于'QLayout'的边距。你可以在'label'周围添加一个布局来模拟这种行为 – Zaiborg
有一个看 http://doc.qt.io/qt-4.8/qlabel.html#indent-prop – Ankur
如果你需要计算一个精确的填充,你可以检查[QLineEdit :: textMargins()](http:// doc .qt.io/qt-5/qlineedit.html#textMargins)加上考虑边框宽度。 – ymoreau