Цитата
Позвольте с вами не согласиться.
Хорошо, но чтобы это в последний раз
Из исходников qt:
Вот здесь значение которое вы передали сохраняется в роли Qt::TextAlgnmentRole
qtablewidget.h
inline void setTextAlignment(int alignment)
{ setData(Qt::TextAlignmentRole, alignment); }
А вот место где оно достается:
qstyleditemdelegate.cpp
value = index.data(Qt::TextAlignmentRole);
if (value.isValid() && !value.isNull())
option->displayAlignment = Qt::Alignment(value.toInt());
И далее:
qcommonstyle.cpp
const QRect layoutRect = QStyle::alignedRect(option->direction, option->displayAlignment,
QSize(int(width), int(height)), textRect);
const QPointF position = layoutRect.topLeft();
for (int i = 0; i < lineCount; ++i) {
const QTextLine line = textLayout.lineAt(i);
if (i == elidedIndex) {
qreal x = position.x() + line.x();
qreal y = position.y() + line.y() + line.ascent();
p->save();
p->setFont(option->font);
p->drawText(QPointF(x, y), elidedText);
После чего смотрим в
qstyle.cpp
QRect QStyle::alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize &size, const QRect &rectangle)
{
alignment = visualAlignment(direction, alignment);
int x = rectangle.x();
int y = rectangle.y();
int w = size.width();
int h = size.height();
if ((alignment & Qt::AlignVCenter) == Qt::AlignVCenter)
y += rectangle.size().height()/2 - h/2;
else if ((alignment & Qt::AlignBottom) == Qt::AlignBottom)
y += rectangle.size().height() - h;
if ((alignment & Qt::AlignRight) == Qt::AlignRight)
x += rectangle.size().width() - w;
else if ((alignment & Qt::AlignHCenter) == Qt::AlignHCenter)
x += rectangle.size().width()/2 - w/2;
return QRect(x, y, w, h);
}
Цитата
2) AlignmentFlag и TextFlag не пересекаются
Это тоже неверно, но это уже придирки по мелочи
Цитата
Qt::AlignBaseline 0x0100 Aligns with the baseline.
Qt::TextSingleLine 0x0100 Treats all whitespace as spaces and prints just one line.
Цитата
3) и самое главное это работает, хоть и не совсем так как нужно.
Это вообще не работает, передавать или не передавать - все равно будет перенос по словам в пределах высоты строки.
Только что попробовал.