C++ Qtの宣伝 シンプルドキュメントアプリ
ただの宣伝なので、プログラミングの勉強にはなりません。Qtの個人的な宣伝のためです。GUIアプリケーションを作るならどんなライブラリがいい?と聞かれて世界のGUIプログラマの80%以上の人はQt!と答えるとか答えないとか。日本はプログラマ人口自体が少ないようですし、さらにQtとなるともっと少ない。機械学習とかゲームプログラミングとかの方が圧倒的に人気だなぁ~って思いますが・・・。昔から少数派に属しやすい質だからかな。Qtにはまっています。
PythonではQtのほかに、TKinterとか、WxPythonとか、Kivyとかあるのかな。Kivyは人気と聞くけど、モバイル開発の方向が濃いらしい?QtもQMLとかが発展してきて、モバイル開発の分野もどんどん強くなっているようですね!これからの時代QMLなんだろうなぁ。TKinterはちょっと外観があれですね。
普段はPythonでPySideをいじっていますが、C++ Qtを覚えてちょっとこういうものを作ってみました。
今のところの機能はこんな感じ。
画像文字を挿入可能
ルーラ―による余白の設定
ページネーション (python - QTextEdit Paginating - Stack Overflow まだ未解決) ここで解決済みみたいになっていますが、(c++ - How to split QTextEdit into pages? - Stack Overflow)間違った解答です。
画像文字を含む文書の永続化 (まだ未解決問題みたい。根拠はどこだったか忘れた。)
検索と置換
検索時のスクロールバー上のハイライト (qt5 - Qt textedit with bookmark in scrollbar - Stack Overflow まだ未解決)
プリントアウト、PDF出力
QTextObjectInterfaceにより挿入された画像文字のコピー&ペースト(これも未解決)
簡単な動画を作ってみました。
Simple document application created by Qt. - YouTube
今の段階でStack Overflowの未解決問題4つ解決できちゃってます。QTextEditネタで後10個以上は未解決問題解決するネタがあります。
頭の中ではもっともっと拡張するネタを持っているのですが、このまっさらなドキュメントビューが好きで拡張をためらってしまいます。
ボタンとかごちゃごちゃつけたくないんですよね・・・。そういう時は、まっさらモードを作ってみたり、隠しGUIを作るのがいいですね。
機能は、キーボードで命令するようにしていますから、GUIおなじみのボタンとかべたべたと張り付けていません。
なぜならば、私はデザイン力がない・・・。GUIを開発するとき、自分の悩みの種の一つです。
一日一個機能を取り付けていく感じです。
時間はかかりますがコツコツと積み重ねるのが大切ですね。
もっと複雑にして自分だけのドキュメントを作りたいですね。やっぱり自作の強みは自分で好きな拡張が出来るということです。大切なことは遊ぶことです。Qt に興味を持った方はぜひ始めてみてください。
Qtは広範なライブラリですから、Qtを学ぶとプログラミングの広範な力が付いてきますよ!ゲームを作ることだってできます。ただ便利すぎて基本のC++の知識が薄くなるという副作用があること。広範で日本語での情報が割と少ないため、学習コストがかかることが悩みですね。結構既存のQtについては学んだのですが、QMLを学ぶということで、どかっ!とまた大きく荷物が重くなりましたし・・・。イメージ処理とかも考えるとOpenCVとか。SQLを学ぶとなるとそれなりのSQL言語を学ぶ必要も出てきます。で、Multimedia系になるとそれ関連の知識とかもどかっ!と乗っかってくるのでしょう。
GUIプログラミングは一番難しい分野だと言われているようです。なぜなら使い手の事を考えなければならないので・・・と。多分一番難しいかどうかは人によると思うのですが、まずは難しいこと考えずに楽しんで、知識を習得することですよね。
Qtを学ぶことは英語の勉強にもなるし、ドイツ語の書籍が出ていることもあります。フランス語やイタリア語、スペイン語、ポルトガル語、中国語や韓国語でも本は出ています。
興味を持ってしまえばこっちのものです。皆さんの中にある可能性を目覚めさせるきっかけになってくれる、素晴らしいライブラリではないかなと思っています。
私の常識と世の中の常識ってかけ離れてると思うんです。Qtみんな知ってるだろうなとか思ってるんですけど、そういうことはないのでしょう。皆さん自分の言語やライブラリで忙しいと思うので、さりげなくライバルのGUIライブラリをディスりながら、ダメ元で宣伝してみようかなと。ノートのネタにもなるしで。
オープンソースで、無料でQt Creatorという超便利な開発キットも使えます。
pythonが学びやすく、便利だと思うのですが、最近C++の方がいいなぁ~と思い始めました。C++は確かに時間がかかりますが、こっちの方が私は精神的に落ち着く気がする・・・。
宣伝というか日記というかぼやきというか。とりとめのない内容ですが、読んでいただいた方はありがとうございました。Qt人口増えてください!お願いします。
Chat GPTに聞いてみたQtの利点
Qtの利点は何ですか?
ChatGPT
Qtは非常に人気のあるGUIフレームワークであり、以下にQtのいくつかの利点を挙げてみます:
クロスプラットフォーム対応: Qtはクロスプラットフォーム対応が強力な特徴です。Windows、Mac、Linuxなどの主要なオペレーティングシステムだけでなく、モバイルプラットフォーム(Android、iOS)や組み込みデバイスにも対応しています。一度のコードベースで複数のプラットフォームに対応することができます。
豊富なウィジェットと機能: Qtは豊富なウィジェットライブラリを提供しており、ボタン、テキストボックス、チャートなど、一般的なGUIコンポーネントを網羅しています。また、データベース接続、ネットワーク通信、マルチスレッド処理など、様々な機能も組み込まれています。
シンプルなAPI: QtのAPIは直感的で使いやすく設計されています。オブジェクト指向プログラミングの原則に基づいており、ウィジェットの作成やイベント処理、データのバインディングなどをシンプルなコードで実現することができます。
信頼性と安定性: Qtは長い歴史と広範なコミュニティにより支えられており、信頼性と安定性が高いと言われています。幅広いアプリケーションや産業分野で使用されており、大規模プロジェクトでも堅牢に動作することが期待できます。
ツールとエコシステム: QtにはQt Creatorという統合開発環境(IDE)が付属しており、GUIアプリケーションの開発をサポートしています。また、Qtのエコシステムには豊富なドキュメント、チュートリアル、サンプルコード、サードパーティライブラリなどがあり、開発を容易に進めることができます。
これらは一般的なQtの利点の例であり、Qtの広範な機能セットや柔軟性により、多くの開発者や企業がQtを選択しています。ただし、プロジェクトの要件や目標に基づいて、利点と欠点を総合的に評価して最適な選択を行うことが重要です。
チャットGPTに聞いてみたGUIライブラリの欠点
wxWidgetsの欠点は何ですか?
ChatGPT
wxWidgetsは非常に強力なC++ GUIツールキットですが、いくつかの欠点もあります。以下に、一般的なwxWidgetsの欠点をいくつか挙げてみます:
学習曲線: wxWidgetsは広範な機能を提供していますが、その分学習曲線が比較的険しいと言えます。特に初めてのユーザーにとっては、ウィジェットの配置、イベント処理、ウィンドウのハンドリングなどの基本的な概念を理解するまでに時間がかかる場合があります。
ドキュメントの不足: wxWidgetsの公式ドキュメントは充実していますが、一部の機能やトピックに関しては不足している場合があります。特に最新バージョンの情報や具体的な使用例に関しては、オンラインのコミュニティやサンプルコードを活用する必要があるかもしれません。
デザインの制約: wxWidgetsは多くのプラットフォームで動作することを重視していますが、その結果、デザインの自由度が他のツールキットに比べて制約されていると言えます。一部のモダンなUIデザインやスタイリングを実現するためには、追加のカスタマイズや労力が必要な場合があります。
リソースの使用: wxWidgetsは他の軽量なツールキットに比べてリソースの使用量が多いと言われています。特にメモリ使用量やビルド時間の増加に関しては、一部の環境や制約のあるシステムでは注意が必要です。
モバイルサポートの限定: wxWidgetsは主にデスクトップアプリケーションの開発に焦点を当てています。モバイルアプリケーションの開発には限定的なサポートしか提供しておらず、クロスプラットフォームのモバイルアプリを開発したい場合には他の選択肢を検討する必要があります。
これらは一般的な欠点の例であり、すべてのプロジェクトや開発者にとって当てはまるわけではありません。wxWidgetsは依然として広く使用されており、多くのプラットフォームで動作する能力と豊富な機能セットを提供しています。プロジェクトの要件や開発者のニーズに基づいて、wxWidgetsの利点と欠点を総合的に評価し、最適な選択を行いましょう。
GTK+の欠点は何ですか?
ChatGPT
GTK+(GIMP Toolkit)は強力なC言語のGUIツールキットですが、いくつかの欠点も存在します。以下に、一般的なGTK+の欠点をいくつか挙げてみます:
学習曲線: GTK+はC言語ベースのライブラリであり、直感的なC++のライブラリと比較すると学習曲線が急な場合があります。特に初めてのユーザーにとっては、イベント処理、ウィジェットの配置、シグナルの扱いなどの基本的な概念に慣れるまでに時間がかかるかもしれません。
C言語の制約: GTK+がC言語で開発されているため、C++のようなオブジェクト指向プログラミングの恩恵を直接享受することができません。一部の開発者にとっては、C言語の制約が煩わしく感じる場合があります。
ドキュメントの不足: GTK+の公式ドキュメントは充実していますが、一部の機能やトピックに関しては不足している場合があります。特に最新バージョンの情報や具体的な使用例に関しては、オンラインのコミュニティやサンプルコードを活用する必要があるかもしれません。
デザインの制約: GTK+はデスクトップ環境で特に優れていると言えますが、他のGUIツールキットと比較するとデザインの自由度が制約されていると言われています。一部のモダンなUIデザインやスタイリングを実現するためには、追加のカスタマイズや労力が必要な場合があります。
モバイルサポートの限定: GTK+は主にデスクトップアプリケーションの開発に焦点を当てています。モバイルアプリケーションの開発には限定的なサポートしか提供しておらず、クロスプラットフォームのモバイルアプリを開発したい場合には他の選択肢を検討する必要があります。
これらは一般的な欠点の例であり、すべてのプロジェクトや開発者にとって当てはまるわけではありません。GTK+は依然として広く使用されており、特にGN
FLTKの欠点は何ですか?
ChatGPT
FLTK(Fast Light Toolkit)は軽量でシンプルなC++ GUIツールキットですが、いくつかの欠点も存在します。以下に、一般的なFLTKの欠点をいくつか挙げてみます:
機能の制限: FLTKは軽量かつシンプルな設計を目指しているため、他のGUIツールキットと比較して機能が制限されている場合があります。高度なグラフィックスやアニメーション、データバインディングなどの機能を求める場合には、追加のカスタマイズやサードパーティライブラリの使用が必要になるかもしれません。
ドキュメントの不足: FLTKの公式ドキュメントは一般的な使用方法をカバーしていますが、一部のトピックや詳細な情報に関しては不足している場合があります。特に最新バージョンの情報や具体的な使用例に関しては、オンラインのコミュニティやサンプルコードを活用する必要があるかもしれません。
デザインの制約: FLTKはシンプルで軽量な設計を追求しているため、他のGUIツールキットと比較するとデザインの自由度が制約されていると言われています。一部のモダンなUIデザインやスタイリングを実現するためには、追加のカスタマイズや手動の描画が必要な場合があります。
モバイルサポートの限定: FLTKは主にデスクトップアプリケーションの開発に焦点を当てています。モバイルアプリケーションの開発には限定的なサポートしか提供しておらず、クロスプラットフォームのモバイルアプリを開発したい場合には他の選択肢を検討する必要があります。
これらは一般的な欠点の例であり、すべてのプロジェクトや開発者にとって当てはまるわけではありません。FLTKは軽量かつシンプルな設計が求められる場合には依然として有用な選択肢となり得ます。ただし、プロジェクトの要件や目標に基づいて、利点と欠点を総合的に評価して最適な選択を行うことが重要です。
やぱりQtがいいですね。これからどんどんドキュメントが増えていくといいですね。
この記事が気に入ったらサポートをしてみませんか?