获取 QLabel 中文本的 (X,Y) 位置
Get (X,Y) position of the Text in QLabel
如何获取QLabel中文本的起始位置。
例如:
如何在不覆盖 paintEvent 的情况下获取 QLabel 中显示的文本的左上位置(仅)。
我无权覆盖 paintEvent 或使用其他小部件,如 QLineEdit
我可以使用 fontmetrics 获取 Width/Height 但要获取文本的 X、Y?
您可以使用以下代码:
QFontMetrics fm(ui->label->font());
int textWide = fm.horizontalAdvance(ui->label->text());
int textHeight = fm.height();
int textX , textY;
if ((ui->label->alignment() & Qt::AlignLeft) == Qt::AlignLeft)
textX = ui->label->x();
if ((ui->label->alignment() & Qt::AlignHCenter) == Qt::AlignHCenter)
textX = ui->label->x() + ( ui->label->width() - textWide) / 2;
if ((ui->label->alignment() & Qt::AlignRight) == Qt::AlignRight)
textX = ui->label->x() + ui->label->width() - textWide ;
if ((ui->label->alignment() & Qt::AlignTop) == Qt::AlignTop)
textY = ui->label->y();
if ((ui->label->alignment() & Qt::AlignVCenter) == Qt::AlignVCenter)
textY = ui->label->y() + ( ui->label->height() - textHeight) / 2;
if ((ui->label->alignment() & Qt::AlignBottom) == Qt::AlignBottom)
textY = ui->label->y() + ui->label->height() - textHeight;
qDebug() << textX << textY << ui->label->x() << ui->label->y();
如何获取QLabel中文本的起始位置。
例如:
如何在不覆盖 paintEvent 的情况下获取 QLabel 中显示的文本的左上位置(仅)。 我无权覆盖 paintEvent 或使用其他小部件,如 QLineEdit 我可以使用 fontmetrics 获取 Width/Height 但要获取文本的 X、Y?
您可以使用以下代码:
QFontMetrics fm(ui->label->font());
int textWide = fm.horizontalAdvance(ui->label->text());
int textHeight = fm.height();
int textX , textY;
if ((ui->label->alignment() & Qt::AlignLeft) == Qt::AlignLeft)
textX = ui->label->x();
if ((ui->label->alignment() & Qt::AlignHCenter) == Qt::AlignHCenter)
textX = ui->label->x() + ( ui->label->width() - textWide) / 2;
if ((ui->label->alignment() & Qt::AlignRight) == Qt::AlignRight)
textX = ui->label->x() + ui->label->width() - textWide ;
if ((ui->label->alignment() & Qt::AlignTop) == Qt::AlignTop)
textY = ui->label->y();
if ((ui->label->alignment() & Qt::AlignVCenter) == Qt::AlignVCenter)
textY = ui->label->y() + ( ui->label->height() - textHeight) / 2;
if ((ui->label->alignment() & Qt::AlignBottom) == Qt::AlignBottom)
textY = ui->label->y() + ui->label->height() - textHeight;
qDebug() << textX << textY << ui->label->x() << ui->label->y();