Russian Qt Forum
Сентябрь 27, 2024, 03:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Text Editor Widget - есть ли готовое решение?  (Прочитано 8508 раз)
warlock
Гость
« : Февраль 04, 2010, 20:15 »

Собственно интересует вопрос, если ли виджет, который реализует самую банальную функциональность текстового редактора. Достаточно даже таковой как вот при публикации темы на этом форуме (жирный, курсив, подчеркнутый текст, выравнивание, цвет и размер текста).

Может быть я чего-то недосмотрел в стандарной библиотеке, а может быть все перед носом и находится - но я не нашел.
Буду признателен за любые ссылки, советы и рекомендации по этой теме. 
Записан
sLiva
Гость
« Ответ #1 : Февраль 04, 2010, 20:19 »

Собственно интересует вопрос, если ли виджет, который реализует самую банальную функциональность текстового редактора. Достаточно даже таковой как вот при публикации темы на этом форуме (жирный, курсив, подчеркнутый текст, выравнивание, цвет и размер текста).

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

http://qt.nokia.com/doc/4.6/demos-textedit.html
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Февраль 05, 2010, 04:35 »

warlock, есть в комплекте с Qt замечательная программа Qt Demo, называется. Не поленись запусти её и посмотри возможности на примерах/демках, все исходники в комплекте с Qt.
Записан

Юра.
vadim303
Гость
« Ответ #3 : Февраль 05, 2010, 09:45 »

Есть довольно мощный компонент. Вопрос только в том действительно ли вам нужна его мощь Улыбающийся

QScintilla is a port to Qt of the Scintilla editing component.

As well as features found in standard text editing components, Scintilla includes features especially useful when editing and debugging source code:

syntax styling with support for over 70 languages
error indicators
code completion
call tips

А базовый функционал есть и в стандартном QTextEdit:

QTextEdit is an advanced WYSIWYG viewer/editor supporting rich text formatting using HTML-style tags. It is optimized to handle large documents and to respond quickly to user input.
code folding
margins can contain markers like those used in debuggers to indicate breakpoints and the current line.
recordable macros
multiple views
printing.
« Последнее редактирование: Февраль 05, 2010, 09:49 от vadim303 » Записан
warlock
Гость
« Ответ #4 : Февраль 05, 2010, 17:52 »

Спасибо огромное. Про существование Qt Demo тоже спасибо)
Про QScintilla почитал - все-таки такой мощи не нужно, я кстати про этот компонент и в книге уже прочитал)

Поскольку я новичек, то мне было очень полезно изучить возможности форматирования текста в QTextEditor, только мне был интересен тот момент, если ли виджет (кнопки + текстовое поле), который можно настраивать (включать/выключать кнопки форматирования текста). Т.е. там создал объект, настроил и т.д.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Февраль 05, 2010, 18:11 »

>>Т.е. там создал объект, настроил и т.д.
ну вот из демки и возьми исходник.
Записан

Юра.
warlock
Гость
« Ответ #6 : Февраль 05, 2010, 18:34 »

Цитировать
ну вот из демки и возьми исходник.
Я уже так и сделал  Улыбающийся

Вот еще вопрос:
В демке реализация например курсива такая:
Код:
connect(actionTextItalic,SIGNAL(triggered()),SLOT(textItalic()));
...
void WkDiary::textItalic()
{
    QTextCharFormat format;
    format.setFontItalic(actionTextItalic->isChecked());
    mergeFormatOnWordOrSelection(format);
}
void WkDiary::mergeFormatOnWordOrSelection(const QTextCharFormat& format)
{
    QTextCursor cursor = editor->textCursor();
    if(!cursor.hasSelection())
        cursor.select(QTextCursor::WordUnderCursor);
    cursor.mergeCharFormat(format);
    editor->mergeCurrentCharFormat(format);
}
Мне показалось это немного громоздким, и я решил чуть изменить реализацию. Если вызывать слот напрямую с передачей bool
Код:
connect(actionTextItalic,SIGNAL(triggered(bool)),editor,SLOT(setFontItalic(bool)));
editor - объект QTextEdit, то ясное дело что при отсутствии выделения текста, ничего происходить не будет. Подкиньте идейку, или просто скажите что я дурней маюсь, и что все отлично реализовано Улыбающийся
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Февраль 05, 2010, 19:44 »

>>то ясное дело что при отсутствии выделения текста, ничего происходить не будет
ты для всего редактора устанавливаешь курсив

>>Подкиньте идейку
а какую идейку? По моему всё уже сделано, пользуйся
Записан

Юра.
warlock
Гость
« Ответ #8 : Февраль 05, 2010, 20:10 »

Цитировать
ты для всего редактора устанавливаешь курсив
проверил - нет
Цитировать
а какую идейку?
можно ли сделать красивее - вот такую идейку

Хотя лично я никогда без выделения текста, не пользуюсь кнопками форматирования, поэтому имхо лучше использовать слот напрямую.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #9 : Февраль 10, 2010, 17:40 »

Готовый редактор на QScintilla: http://ste.sintegrial.com/
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 23.