前稿で画面表示は一段落ってことにして、本稿では 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: }