2016-08-06 2 views
2

Я пытаюсь сделать немного C++ текстовый редактор с использованием Qt. Когда я нажимаю клавишу "tab" на моей клавиатуре в редакторе, она отделяет линию намного больше, чем необходимо. Я хотел бы, чтобы код отступал примерно на 3 пробела, а не на 11 пробелов. Есть ли способ изменить функцию клавиши табуляции? Благодарю.QTextEdit Уменьшение Отступ «tab» Key

+1

Если нет возможности напрямую настраивать поведение TAB, переопределите 'keyPressEvent' и поймите и обработайте TAB по своему усмотрению. – hyde

+0

Требуется уточнение: хотите ли вы сохранить ключ TAB, вставляя символ TAB (код ASCII 9), и просто измените ширину табуляции? Или вы хотите изменить его так, чтобы клавиша TAB вставляла пробелы? – hyde

ответ

3

Чтобы изменить ширину TAB (ASCII символ 9), вы можете использовать tabStopWidth свойство, которое существует как для QTextEdit и QPlainTextEdit (doc link). Он принимает ширину табуляции в пикселях. Обратите внимание, что TAB не имеет фиксированную ширину, а не движется вперед к следующему TAB остановить, которые находятся в интервалах пикселей, определенных этим свойством, начиная с левого края.

Если вы хотите ширину TAB зависит от шрифта, вы можете использовать QFontMetrics класс, чтобы получить ширину пикселя для некоторого шрифта и Характерный код:

// this object is QTextEdit or QPlainTextEdit or a subclass 
    int fontWidth = QFontMetrics(this->currentCharFormat().font()).averageCharWidth(); 
    this->setTabStopWidth(3 * fontWidth); 
Смежные вопросы