2015-10-11 9 views
1

У меня есть QWidget под названием side и QTextEdit внутри его sideLayout макет.Выравнивание текста в нижней части QTextEdit

chatView = QTextEdit() 
chatView.setHtml('<p style="margin: 0px; line-height: 28px;">') 
sideLayout.addWidget(tab.chatView, 0, 0, 1, 1) 

Ниже QTextEdit есть QLineEdit называется inputLine, где я пишу текст и отправить его в QTextEdit через .append(inputLine.text()) на Return.

Я хочу, чтобы каждая новая строка (элемент <p>) появилась внизу, а каждая новая строка была добавлена ​​ниже первой.

Вот как это выглядит сейчас:

Text not aligned to bottom

Я попытался setStylesheet() с p { vertical-align: bottom; }.
Я пробовал p { position: absolute; bottom: 0px; }
Я пробовал setAlignment() с Qt.AlignBottom.

Как я могу сделать линии выровнены по дну, как это?

Desired alignment

ответ

3

Если чат ракурса будет доступен только для чтения, вы действительно не нужен текст для редактирования. Просто используйте QLabel, а затем setAligment будет работать, как ожидалось:

self.chatView = QtGui.QLabel(self) 
self.chatView..setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignBottom) 

Чтобы добавить текст, вы можете сделать что-то вроде:

self.chatView.setText(
    '%s<p>%s</p>' 
    % (self.chatView.text(), self.inputLine.text())) 

(PS: Вы можете также должны поставить метку в QScrollArea).

+0

О, правда, я об этом не думал. Я попробую завтра и отчитаюсь. Я знал, что QLabel поддерживает богатый текст и html. – VixinG