Обозначение текста в QTextEdit [дубликат]

Мета-программирование - это весело, но может быть в пути. Большинство решений здесь затрудняют:

  • выборочно запускать тестовый
  • пункт обратно к названию данного кода

Итак, мое первое предложение состоит в том, чтобы следовать простому / явному пути (работает с любым тестовым бегуном):

import unittest

class TestSequence(unittest.TestCase):

    def _test_complex_property(self, a, b):
        self.assertEqual(a,b)

    def test_foo(self):
        self._test_complex_property("a", "a")
    def test_bar(self):
        self._test_complex_property("a", "b")
    def test_lee(self):
        self._test_complex_property("b", "b")

if __name__ == '__main__':
    unittest.main()

Поскольку мы не должны повторять себя, мое второе предложение основывается на ответе @ Хавьера: включите тестирование на основе свойств , Библиотека гипотез:

  • «более неуклонно охарактеризована по поводу генерации тестового случая, чем мы, просто люди»
  • предоставит простые примеры подсчета
  • , работает с любыми test runner
  • имеет гораздо больше интересных функций (статистика, дополнительный тестовый результат, ...) класс TestSequence (unittest.TestCase):
    @given(st.text(), st.text())
    def test_complex_property(self, a, b):
        self.assertEqual(a,b)
    

Чтобы проверить свои конкретные примеры, просто добавьте:

    @example("a", "a")
    @example("a", "b")
    @example("b", "b")

Чтобы запустить только один конкретный пример, вы можете прокомментировать другие примеры (при условии, что пример будет запущен первым). Вы можете использовать @given(st.nothing()). Другой вариант - заменить весь блок на:

    @given(st.just("a"), st.just("b"))

Хорошо, у вас нет разных имен тестов. Но, возможно, вам просто нужно:

  • описательное имя тестируемого свойства.
  • , который приводит к ошибке (пример фальсификации).

Пример Funnier

1
задан Kvass 15 September 2014 в 20:01
поделиться

1 ответ

Как указано в документации:

void QTextEdit::setAlignment(Qt::Alignment a) [slot]

Устанавливает выравнивание текущего абзаца на a. Допустимые выравнивания: Qt::AlignLeft, Qt::AlignRight, Qt::AlignJustify и Qt::AlignCenter (которые расположены по горизонтали).

Ссылка: http://qt-project.org/doc/qt- 5 / qtextedit.html # setAlignment

Итак, как вы можете видеть, вы должны обеспечить некоторое выравнивание каждого абзаца.

Маленький пример:

QTextCursor cursor = ui->textEdit->textCursor();
QTextBlockFormat textBlockFormat = cursor.blockFormat();
textBlockFormat.setAlignment(Qt::AlignRight);//or another alignment
cursor.mergeBlockFormat(textBlockFormat);
ui->textEdit->setTextCursor(cursor);

Какой результат я получаю на своем компьютере?

enter image description here [/g1]

Или что-то ближе к вашему вопросу:

ui->textEdit->clear();
ui->textEdit->append("example");
ui->textEdit->append("example");
QTextCursor cursor = ui->textEdit->textCursor();
QTextBlockFormat textBlockFormat = cursor.blockFormat();
textBlockFormat.setAlignment(Qt::AlignRight);
cursor.mergeBlockFormat(textBlockFormat);
ui->textEdit->setTextCursor(cursor);

ui->textEdit->append("example");

cursor = ui->textEdit->textCursor();
textBlockFormat = cursor.blockFormat();
textBlockFormat.setAlignment(Qt::AlignCenter);
cursor.mergeBlockFormat(textBlockFormat);
ui->textEdit->setTextCursor(cursor);

Результат:

enter image description here [/g2]

6
ответ дан Chernobyl 25 August 2018 в 17:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: