Глава 10 – Элементы ввода

Элементы ввода

Приобрести книгу можно на сайте ozon.ru и в электронном виде на Google Play:
Приобрести книгу о Qt и C++ на Ozon.ru Купить книгу о Qt и C++ на Goole Play

4 thoughts on “Глава 10 – Элементы ввода

  1. Здравствуйте, Макс!
    На стр. 167 Листинг 10.5 приведен код функции main(). Там есть строки:

    1. QPalette pal = txt.palette();
    2. pal.setColor(QPalette::Base, Qt::darkBlue);
    3. pal.setColor(QPalette::Text, Qt::yellow);
    4. txt.setPalette(pal);

    Насколько я понимаю здесь создается объект палитры – 1 строка, далее фону присваивается синий цвет, а тексту желтый – 2 и 3 строки, а в 4 сроке для виджета txt (текстового редактора) устанавливается палитра pal.
    Вопрос следующий: зачем в первой строке мы объекту pal присваиваем txt.palette()? Если первую строку сделать вида: “QPalette pal;”, т.е. просто создать объект палитры, то всё так же работает…

    1. Это сделано для того что бы изменить только указанные значения палитры Base и Text. В противном случае нет гарантий у созданного по умолчанию объекта класса QPalette все значения палитры совпадали бы с палитрой объекта класса QTextEdit. То есть это сделано для того что бы непреднамеренно не изменить некоторые значения палитры объекта txt.

  2. Макс, доброго времени суток!

    В главе 10, в коде SyntaxHighlighter, в файле main.cpp наткнулся на такую строчку:
    new SyntaxHighlighter(txt.document());

    Как это работает? Сколько сталкивался с оператором new (ну или placement new), он всегда возвращал указатель на void. Ну т.е. по идее, логично было бы увидеть что-то вроде:

    SyntaxHighlighter* highlighter = new SyntaxHighlighter();
    highighter->accept(txt.document());
    (accept – это отсебятина; понятно, что нет такой функции, я сам подход имею в виду)

    Иначе эта строка makes little sense to me. )

Добавить комментарий