QScintilla:アプリケーションの構文を強調表示

こんにちは$ユーザー名!



UPD :QScintillaシリーズの2番目3番目の部分。



今日は、Qtアプリケーションのコードの構文を強調するQScintillaという素晴らしいプロジェクトについてお話したいと思います。 多くの場合、何かを強調する必要があります。 例:C ++、Bash、PHP、Diff ...このリストは延々と続きます。 しかし、ここに解決策があります:QtのScintillaポート:QScintilla。



この投稿では、例としてUbuntu Linuxを使用して、アプリケーションにQScintillaをインストールして使用する方法を示します。



設置



最も重要なことから始めましょう-インストールから。 QScintillaをビルドして、システムにインストールすることをお勧めします。 これを行うには、qscintilla tarballをダウンロードします。 必要なフォルダーに解凍します。 今コンソール。 いくつかの簡単なコマンドを実行します。



cd Qt4 qmake make sudo make install
      
      





素晴らしい。 すべてを正しく行った場合、libqscintilla2.soがシステムに表示されます



Qt Creatorを開きます



やった! コーディングを開始できます。 基準を開きます-プロジェクトを作成します。 次に、プロファイルに行を追加します。



 LIBS += -lqscintilla2
      
      





この行がQScintillaを接続していると推測するのは簡単です。 次に、プロジェクトのコーディングに直接進みます。 コンストラクターmainwindow.cpp:



 #include <QtGui> #include <Qsci/qsciscintilla.h> #include <Qsci/qscilexercpp.h> #include "mainwindow.h" MainWindow::MainWindow() { textEdit = new QsciScintilla; //   textEdit->setUtf8(true); //      setCentralWidget(textEdit); //    ui QsciLexerCPP * lexCpp = new QsciLexerCPP(this); //   ( ) textEdit->setLexer(lexCpp); //  ++    }
      
      





MainWindowに追加することを忘れないでください:



 private: QSciScintilla *textEdit;
      
      







安全にコンパイルできます-C ++コードを強調表示するエディターが表示されます。







これまでのところ、それほどクールに見えませんが、今のところはそれだけです。 そして今、楽しみが始まります。 エディターを拡張して装飾することを提案します。 コンストラクターに追加します。



  //!       textEdit->setCaretLineVisible(true); textEdit->setCaretLineBackgroundColor(QColor("gainsboro")); //!  textEdit->setAutoIndent(true); textEdit->setIndentationGuides(false); textEdit->setIndentationsUseTabs(true); textEdit->setIndentationWidth(4); //! margin   ,     breakpoints textEdit->setMarginsBackgroundColor(QColor("gainsboro")); textEdit->setMarginLineNumbers(1, true); textEdit->setMarginWidth(1, 50); //! -      textEdit->setAutoCompletionSource(QsciScintilla::AcsAll); textEdit->setAutoCompletionCaseSensitivity(true); textEdit->setAutoCompletionReplaceWord(true); textEdit->setAutoCompletionUseSingle(QsciScintilla::AcusAlways); textEdit->setAutoCompletionThreshold(0); //!    textEdit->setBraceMatching(QsciScintilla::SloppyBraceMatch); textEdit->setMatchedBraceBackgroundColor(Qt::yellow); textEdit->setUnmatchedBraceForegroundColor(Qt::blue);
      
      







今、私たちは何かをする方法さえ知っている比較的動作するエディタを得ます。 もちろん、彼には多くの欠点がありますが、それらはすべて修正可能です。







おそらくそれだけです。 レクサーの作成、検索管理、文字列制御についてもお話ししたいと思いますが、これは1つの記事には多すぎます。 しかし、次の記事を待ちたくない場合は、ドキュメントを読み、最も重要なこと-実験してください!



素材









ご清聴ありがとうございました!



All Articles