【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 18©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
Qt(キュート)は C++ ベースのフレームワーク&RAD開発環境です。
ライブラリの機能は、フォーム、ボタンなどの各種ウィジェットからネットワーク、マルチスレッド、
グラフィックス(OpenGL)や各種コンテナ、XMLパーサー、組み込み JavaScript など、非常に多岐に渡ります。
公式の統合開発環境「Qt Creator IDE」を使えば、クロスプラットフォーム対応のRAD開発が可能です。
また、EclipseやVisual Studio上で開発したい人のためのアドインも用意されています。
■主な対応プラットフォーム(デスクトップ用途の場合)
Windows XP, Vista, 7
Mac OS X 10.4, 10.5, 10.6
Linux
■ライセンス
・オープンソース版(Open-source version)
LGPL 2.1 または GPL 3.0 のうちどちらかを利用者が選べます。
LGPL を選んだ場合はソースコード非公開のままでの商用利用が可能です(いくつか制限あり)。
※正確には通常「LGPL+商用利用向きの例外条項」を選ぶことにな7ります(Qtインストール先の「LGPL_EXCEPTION.txt」を参照)。
ちなみにGPLでも商用利用が不可能というわけではありません、念のため。
・商用版(Commercial version)
こっちはDigia社か日本の代理店(SRA社)とライセンス契約(年間30万くらい?)を結んで使います
■Qt を使って作られたソフト例
KDE、Maya、Adobe Photoshop Elements、Google Earth、Skype、DAZ Studio
MotionBuilder、RealFlow、Nuke、LuxRender、Mathematica、Kindle、VirtualBox、
RuviEdit、さくさくエディタ など
■前スレ
【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 17
http://echo.2ch.net/test/read.cgi/tech/1438593408/ iOSとAndroidのアプリをQtで作ろうとしたけれどまともなもの作れないじゃないか。
どっちのUIもひどい。iWatch対応ってなっているけれどUIを作れないのは嘘つきだ。
モバイル対応はまったくできていない。 ○Windows アプリをそのままAndroid で動かせる
×Android SDKをフルセットで扱える
iOS?知らんがな Qtって誰が使ってるんだろう
話題になったアプリがQt製だったことなんて2年前のopentoonz以来知らないわ ぶっちゃけ、デザインに『凝ってない』アプリか、
Windows でライブラリが同梱されてるかぐらいじゃないと気付かないと思う
業務用、組込み用なんてわかるはずもなく pythonでGUIだとQtくらいしか選択肢ないんちゃうの 手元のPCで見る限り、
・フリーソフトの動画編集ソフトで海外製のやつはだいたい
・DropBox
・Adobe AIR/OpenCL SDK
・画像ビューアがいくつか、
だな。
スタティックリンクされてるのまでは調べてない。 >>757
Tkinterが標準でしょ・・。
あと、PyGtkもC言語のGtkよりWebページだくさんあるよ。 こちらのゲームツールをwindowsで実行したいのですが
http://generalarcade.com/gamepadtool/
エラーメッセージのダイアログが出てしまいます。
ダウンロードして解凍するだけなので再インストールはできないし、
対処方法を探しましたが解決できないため
お伺いする次第です。どうやれば実行出来るのでしょうか
検索しても、
1. qt.conf をつくれ → 何のパスを設定すれば良いかわからない
2. depends でパスを調べれ → 対応してもエラー箇所が減らない
3. 作者に聞いてみる → 解凍して実行しろよとのお言葉。わけわからん
マシンはwindows10 pro x64,QT5.8もインストールしてみました。
---------------------------
gamepad-tool
---------------------------
This application failed to start because it could not find or load the Qt platform plugin "windows"
in "".
Reinstalling the application may fix this problem.
---------------------------
OK
--------------------------- >>762
エラーメッセージで検索すると似たようなのが出てくる。
https://github.com/ContinuumIO/anaconda-issues/issues/1270
・2byte文字を含まないフォルダにファイルを置く
・platforms にある qwindows.dll を exe と同じ階層にコピーする
のどちらかで解決できそうだが >>763
残念ながらどちらともダメでした。
回答ありがとうございました。 ファイルパス・PC のユーザー名など、システムに日本語を使うな
半角英数字だけを使え それ、どっちかっていうとmingwの制約かと
まぁ開発者にとって気持ち悪さは半端ないけども >>762
それはqwindows.dllが足りないときに出る症状だ。
通常platforms\qwindows.dll に配置すればいい。
qt.confを各と、Qt製アプリが必要とするQtのプラグイン等のパスを変更することができる。
Qt SDKのwindeployqt.exeにアプリのexeをドロップすると、そのアプリが必要とするプラグインや
設定ファイルが自動生成されるからやってみるといいかもね。 回答ありがとうございます。
結果からいうと、動くようになりました。
解凍でwindows10の展開機能を使いました。
サードの解凍ソフトではエラーが出るのです。
作者殿の回答をよくよく見てみれば確かにそう書いてありました。 良かったらそのエラーになった解凍ソフト教えてほしい 当人じゃなく、別件ではあるが、
圧縮解凍ライブラリが静的リンクされてるやつ、
もしくは32bit系当時のソフトだとなりがち
メジャーなライブラリで、dll形式で同梱されてるやつだと、
そこだけ更新すりゃ特に問題起きないね たとえばLhaPlusみたいなクソアーカイバだと、
deflate64なzipの展開をぶっ壊れた状態で平気で展開するから
作者に余計なクレームが届く悲劇が起こる。
そのくせLhaPlusは公開したままだしな。
マジ迷惑だわ。 古すぎるそんなの使うなって話だけど
それなら公開したままのサイトの責任もあるよな お気楽な無責任バグ修正ビジネスモデル
Open Governance → Open Maintenance → Waiting for 3rd party response
→ Too old → Removed Qt Creatorで開発を始めたところです。
Windowsで、日本語を含む文字列「テスト.txt」を引数に渡すと「???.txt」に文字化けします。
デバッガで見ると、main文のargvの時点で「???.txt」になってます。
QString::fromLocal8bit(argv[1])の結果も同様です。
これってなぜでしょうか?
(Linux上では問題なし) >>775
ファイルをUTF-8 BOM付きにしたらイけました。
(コンパイラはVisual C++)
ありがとうございます。 ちなみに Visual Studio で、ソースコードを BOM なしにするとひどいことになるゾ
主に日本語コメントがめんどくさくて、
/*これはダメで*/
/* これはOKだ */ 「無料が基本」のオープンソース文化圏で有料ソフトウェアの販売は受け入れられるのか?
https://gigazine.net/news/20180725-hiri-on-linux/
このhiriっていうメールアプリQtを使ってるみたい >>777
スペースの有無で上手くいかなかったりするってことですか? BOM なしUTF8にした場合の話ね
/*の直後にマルチバイト文字が来ると誤判定されるっぽい
まぁVisual Studio としてもBOM ありを推奨してたはずだから文句は言えないのだけど というよりも、プログラムに日本語を混入する方が馬鹿げているので、
プログラム本体は全て英語で作って日本語の部分はコメント程度に留めておくことを進める。
文字列リテラルとかは全部外部化する 昔、YPSと言う日本語+フローチャートな言語があってな・・・・ってまだ作っとんかい!?→不治痛 文字列リテラルを全部外部化するといっても、必ずしもテキストファイルを読み込むコードを手で書く必要はない。
tr("abc")
ってプログラム中に書いておいて、Qt Linguistで言語リソースを作ってアプリにバンドルすれば、
実行時には文字列"abc"に対してQtが自動的に
日本語の文字列を割り当てる形でプログラム中に読み込まれる。
もちろん言語リソースの選択はPC環境の言語に合わせて自動選択することも明示的に選択することもできるし、
iniファイルとかを作って自前で差し替えするコードを書くこともできる。 midiの編集ソフトを探しています
GUIアプリケーションの開発になるので、VisualStudioでMFCと思い立ち、WindowsAPIにはmidi関連のAPIも含まれてるので、面倒なサードパーティライブラリを用意したりmidi再生部分を自作する手間が省けると思いました
調べたらQtもmidi関連のAPIを持ってそうな雰囲気なのですがどうなのでしょう?
ただ、日本語の情報がなさそうでした
確かFluidSynthのGUIがQt製だったように思いますSoundFontが使えるのでmidi化したあとのプレイバックに使えますかね? ふと思ったんですが、スキャンした楽譜からMIDIデータを生成するんじゃなくて、例えばMuseScoreのような楽譜xmlを書き出した方が良いですよね 楽譜の読み方とかよく知らないけど、五線譜のエディタがあっておたまじゃくしを配置するとドレミとか再生に必要な情報がキューイングされて行って、midiファイルをエクスポートする時にmidiのデータ形式に変換されるイメージだった
楽譜の画像解析とか面倒な事はしなくて、ユーザーに楽譜を書かせる感じ
openmidiのページにある世界樹ってやつの機能切り出し版みたいな 任意の位置の点が0か1か、と、楽譜、なら、こりゃもう楽譜OCRだろうと思ってたw soundOCRなら意味あるけど楽譜OCRなんて馬鹿のやること 単純にドレミをmidi形式でシリアライズするぐらいならWindowsAPIとかQt備え付けのAPIで充分かな〜と思ってたけど、エフェクトとかも編集したいとか要望が複雑化してくるのなら確かにopenmidi使うのが良いかも
openmidiで物足りねぇ俺はもっと変態的な事がしたいんだ!ってなった時にはサウンドプログラミングを学ぶのも手かな Qtで表を表示したいんですけど
1つのヘッダーに2列データを表示するみたいなことって出来ませんかね? >>795
QStyledItemDelegateを使って描画イベントを乗っ取るのが一番簡単だと思う。
基本的には元の描画方法をコピペして乗っ取っても同じ描画になることを確認してから、
少しずつカスタマイズしていく。 >>797
QStyledItemDelegateですね
ちょっと調べてみます
ありがとうございました QPrintDialogでオプションで設定した用紙サイズが反映されないんですが、
なにか原因ありますかね?
printer->setPaperSize( QPagedPaintDevice::A3 );
printer->setPageOrientation( QPageLayout::Landscape );
QPrintDialog *printDialog = new QPrintDialog( printer, 0 );
printDialog->enabledOptions(); 質問です
C++ではこんな風に書けばメインスレッドに簡単に投げられますがpyqtで似たようなことをするにはどうすればいいでしょうか?
QObject::connect(&QObject(), &QObject::destroyed, [&]() { }); こんな風にしたいんだけどどうすればいいのか全くわからない
そもそもconnectが見つからない
from PyQt5.QtCore import QObject
QObject.connect(QObject(), QObject.destroyed, lambda: print("print")) フラットデザインといいますかwebページっぽいデザインにしなくてはいけなくなったんですが
webengineを使わずにそれっぽいデザインのサンプルはどこかにないでしょうか? Qtアプリの見た目を変更するのはWidgetにStyleSheetを適用するんだが、
アプリ全体に同じようなStyleを統一的に適用するためのThemeという仕組みが存在する。
基本的に各OSごとに用意されているわけだが、フラットなUIを実現してくれるThemeがなにかあるかもね。
見つけたら報告してね。 windows10でQt5.11+qtcreator4.6にしてから、
日本語入力して確定前にBackspaceで入力中の文字を削除すると、
実際のテキストでは消えているのに、表示上は消えず、しかもカーソルが
消えてしまう、みたいな現象があるのですが、解決方法ご存知の方いませんか。 >>808
俺もそう思うがリバースエンジニアリング対策でコンパイルできる言語でないとだめだと言われた >>810
Javaもc#も駄目なのか
JavaScriptを難読化させたら読む気にならないコードになるが。 ウィジェットコンポーネントが整備されてない
Electronでまともなアプリを作ろうと思ったら火傷するだけだと思うんだがな。
最近のエンジニアはそう思わないんだろうか。 WindowsのQtで、USB シリアル使用中に、USBケーブル引っこ抜かれたときのえらーって
検知・対処方法ってわかりますか
スレッドの終了またはアプリケーションの要求によってI/O処理は中止されました
と出て、次に延々と
デバイスがコマンドを認識できません
のダイアログが出てきて追われないんです。
仕方なしにタスクマネジャから殺しています
殺さずに自分で終わりたいのですが >>813
んー、Windowsでシリアルデバイスを扱うこと自体はWin32 APIでもそれほど難しい処理ではないから、
一度自力でサンプルを書いて挙動を調べたほうがいいと思うよ。
API越しのデバイスの実際の挙動を把握してから、自分で作ったQtのプログラムでどうすべきか考えればいいのでは。
あるいは、GUIだけQtで作って、通信部分はWin32 APIで記述するキメラ実装であってもいいわけだし。 boostにシリアル通信用のライブラリも無かったっけ boost.asioはライブラリを作るためのライブラリなので便利なライブラリを見つけてきた方がいい c++の構造体をqml側で読み込むには構造体の要素それぞれをQ_PROPERTYマクロで宣言するしかないのでしょうか? コンパイルが糞重いんで、
Zapccに対応してくれないかな〜 サブプロジェクトに分けて、最終成果物だけリビルドしたらそれほど遅くはない まぢかw
qmakeが今ひとつ書きづらいところがあるからqbsに将来的に移行しようと思ってたが、
(installシステムを活用しないとまともに処理が書けない)
CMakeに開発リソース突っ込むのかよ。
こりゃあqmakeも捨ててCMakeで書き直したほうがいいかもなあ。 >>821
レスが遅れてすみません
サブプロジェクトに分ける方法を試してみます あれから勉強してqbsで
自作のProductやModule/Ruleを書いて動かせるようになったが、
資料がなさすぎて死ねるな。
公式ソース添付のテストプロジェクトが一番マシな資料というね。 最近転職活動してるんだが、Qt の需要高くなってんのな
車載経験してるのもあるけど、他業界の組込み系もQt採用を追従してて、
そんなにアピールしてないのにそこに食い付く企業さん多い まあQtの組み込みアプリをメンテして50万って仕事ならあるな。 組み込み系UIでまともに使えるフレームワークがあって、タッチ操作がさばけるのはQtくらいしかないからな javaからの移行考えてるけど
メモリリークが不安で踏み切れないです
正式記述は覚えることは基本として
使いやすい(手間のかけない)fullGCみたいのってあります?
メモリリークの検出機能でなんとかなるのかな そんなものはない。
ってかメモリ開放は全て責任をとった上で、
メモリブロックの開放確保のアルゴリズムをライブラリ切り替えで変更するのがC++の流儀。
まあ、Qtはその部分も内蔵してるので、ここを差し替えるときは自力でQt全体のビルドが必要になるが。
メモリ確保がシビアなら、実際の処理を別プロセスにやらせて、プロセスごと殺せばいいんじゃね。
その方が手っ取り早い。 よく思うのだけど、Qt のサンプルとかってやけにnewで動的確保してない?
必要な時に初期化しつつ生成ならまだしも、
常に持ち続けるパラメータだったり、生成が一度限りのインスタンスだったり
QObject や QWidget のベースクラスへのポインタ渡せば、
自壊時にメモリの解放もしてくれます、って機能は、
逆に new で動的確保したアドレスでないとダメって縛りはないですよね? 親子にしておけば勝手に解放してくれるから
newしまくるのがQt流 Qtで2万行ぐらいのアプリ作ってるけど、
結構ローカルスコープでインスタンスを扱うことが多いかな。
QImageとか、カジュアルにインスタンスをコピーしても
パフォーマンスの問題がないのは嬉しいね。
ポインタをやむを得ず使うのはコピーコンストラクタがまともにないクラスを扱う場合。 そりゃインスタンスは余程のことがなけりゃ滅多に動的では取らんだろー
今も昔も変わらずさ
一般型の動的配列はCやってきた奴はalloc使いたがるつーかallocしか知らんけど
C++ならnewだわな vectorは配列やクラスインスタンスには使うけど
一般型でvectorは使わんな QtCreator使いにくいからVSで開発したいのに環境構築で詰む ■ このスレッドは過去ログ倉庫に格納されています