前稿で画面表示は一段落ってことにして、本稿では Ctrl を押しながらのマウスホイール操作によりフォントサイズ変更機能を実装してみる。
まずはフォントサイズ指定メソッドを実装する。
1: void ViEditView::setFontPointSize(int sz) 2: { 3: QFont ft = font(); 4: ft.setPointSize(sz); 5: setFont(ft); 6: onFontChanged(); 7: } 8: void ViEditView::onFontChanged() 9: { 10: setTabStopWidth(fontMetrics().width(' ') * 4); // tab 4 11: m_lineNumberWidth = fontMetrics().width('8') * 6; 12: m_lineNumberAreaWidth = fontMetrics().width('8') * 8; 13: setViewportMargins(m_lineNumberAreaWidth, 0, 0, 0); 14: updateLineNumberAreaSize(); 15: }
1: void ViEditView::makeFontBigger(bool bigger) 2: { 3: int sz = font().pointSize(); 4: if( bigger ) 5: ++sz; 6: else if( !--sz ) return; 7: setFontPointSize(sz); 8: }
1: void ViEditView::wheelEvent ( QWheelEvent * event ) 2: { 3: Qt::KeyboardModifiers mod = event->modifiers (); 4: if( (mod & Qt::ControlModifier) != 0 ) 5: makeFontBigger(event->delta() > 0); 6: else 7: QPlainTextEdit::wheelEvent(event); 8: }