【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/ >>496
ソースツリーの量に関係なく
やっと補完表示されてから他のファイルを編集し
戻ってきてまた編集すると補完でまた待たされる
同じものが補完されたりされなかったりもする
ヘルプも一度目は大概他のが表示され、二度目に正しく表示される
ヘルプがあるのに表示されないのもよくある
補完とヘルプがすぐに正しく表示されないので使い難い デザインエディターでサイズとかの入力中にキー入力ごとにプレビューが変わるのは筋悪、入力確定で変わるの筋良
ファイル名の変更でサフィックス含めて選択されるのも筋悪、サフィックスを除いた部分が反転されるのが筋良
フォーム上に置いたエレメントが選択できなくなるのはひどいバグ、他のファイルを表示させて戻ると選択できるようにはなる 文句あるならプルリクエスト出せよ。
何のためのオープンソースなんだよ。 >>501
オープンソースだからだと? 欠陥とバグだらけとは関係ない 僕は長い間Qt使ってるけど、Honeyは40年間いた事ないんです(><;) お前ら Qt Advent Calendar 参加しろよ
まあここにはキモカネおっさんしかいないから浮くだけか JUCEにPersonalライセンスなんてものが出来ていたから使ってみる >>505
一人で複数を除くと空きが16もある
人気ないな >>505
埋めるためだけで内容が薄いのがちらほら
よいしょで気持ち悪いのもある webassemblyでブラウザでqtがそのまま動くようになればワンチャンある? 俺に言わせれば、Gtkmmの方が良い。俺はGtkmmにゾッコンだ。
GtkmmにもQtQuickみたいなやつが欲しいな・・。Gtkmmick(Gtkモミック)みたいな感じのネームが良い。 GUIツールキットってtk wx以外になにがある? chromeでad block系をONにしたままだと
https://www.qt.io/download
からDLするボタンが表示されなかったぜ
どういうことなんだぜ VisualStudio2017でQt使うのは無理みたいだね。
日英のそれっぽいブログのとおりにやってみたけど、Qtのbuildが見つからない
」エラーでプロジェクトが作成できないよ。 コードのライセンスについて勉強したいのですがいいサイトありますか? qmake -project が二時間放置しても終わらない
たったの40行なのになぁ
Please help me. qmakeはMakefileやVisualStudioのソリューションを生成するツールだから、
qmake自体が直接何か処理するわけじゃない。
だから生成されたスクリプトやソリューションが何をしているかを調べるべき。
まあ十中八九書いた本人のせいという落ちだろうけどね。 >>533
qmake -projectが二時間以上終わらないのだからqmakeが直接処理しているだけ。
つまり、Qtのバグ。 jetbrains toolboxってQt製だけどUIはQtWebEngine使ってjavascriptで作ってるんだね
Qtの正しい使い方って感じがする
Qtがデスクトップで生き残るにはこれしかない >>529
もしかして.runファイル使ってインストールした?
それするとqmakeが正常に働かないけど >>534
ロクにやってることも知らないのによく Qt のバグとか言えるなあ。
qmake -project がやってることはカレント以下のフォルダを再帰的にたどって .cpp やら .h のリストを作ってるだけ。
カレント以下に symbolic link があって再帰してるか、必要なないフォルダへにリンクしてるだけじゃないの? >>537
やってることは知っているよ、
そういうのを判断するように作っていないとしたらQtのバグだというのすらわからないのだな。 本体横の音量ボタンを無効にすることはできませんか?
一定の音量で固定することが目的で、代替案でも嬉しいです 「どこの誤爆か?」
と書こうとしたけどやめて正解だった >>538
へー、わかってるのにわざわざ2時間以上待ってたんだ。だったらそもそも help me とか言う必要ないよね。
自分で recursive な link 作っておいてツールのバグとか意味不明だわ。 >>543
賢いプログラムならrecursive linkは考量する
もしそれを考えてqmakeが作られていならそれはバグ 賢くないプログラムを使いこなせるのは賢い人だけ
賢くない人はバグレポも出さずに文句を言い続ける QListView + QStandardItemModel + QStandardItem で
画像のサムネイル表示を作っています。
一先ず、拡張子のアイコンを表示しておいて、
QtConcurrentRun::run で 差し替えているのですが、
マウスオーバー とか resize 等 が 発生しないと反映されません。
よくわかってないまま、
emit model->itemChanged(item)
とやってみたりしたのですが、うまくいっておりません。
こういう場合どうすればよいのでしょうか? >>546
ああそれはね。AbstructItemModelに対して
モデルをリセットすると宣言すればいいのよ。
つまり、
emit beginResetModel()
emit endResetModel()
を呼び出す。当然ながら2つのemitの間でモデルの差し替えを行う。 >>547
ありがとうございます。期待していた挙動になりました。
modelで制御するんですね。 beginResetModel を使用して 1枚づつ更新できるようになったのですが、
選択アイテムが初期化されたりと、意図しないstateのreset が起きて困ってます。
(スクロール状況中だと戻ったりもしました)
できれば、item毎に更新したいのですが、どうすれば良いでしょうか? 今のPCだと1秒で20枚以上の画像ファイルサムネイルを作れるはずなので、
1枚ごとにアイコンを再描画したいと考えるのは馬鹿げていると思う。
毎秒数回程度に再描画の数を抑えるべき。
サムネイル画像のサイズは高々知れているので、
数百万個を一度に処理するというのでなければオンメモリで持っていて良い。
QVectorやQListなどに出来上がり次第入れていき、ときどき前再描画とかでいいのでは。
何番目のアイコンを選択してるかは自前で保持しておけばいい。 >>552
アドバイスありがとうございます。
描画頻度に関しては、ご指摘のとおりであり、
1秒毎にでききた分を差し替えるようにしていました。
551 の件は、描写頻度に関係なく 発生していましたので、
単純化して質問しました。
勝手に省いて申し訳ありませんでした。
> 自前で保持
reset 前後で、currentIndexを保持、復元を試しみましてみましたが、
いまのところ上手くいってません。試行錯誤してみます。
個人的には、
変更をmodel に通達したら、view が必要に応じて描画ってなって欲しいのですが、
できないのでしょうか?
reset は、強力すぎるというかやりすぎという感じがしてしまいます。 >>547
で書いたemit は不要だったね。こいつは通常のメソッドであってSIGNALではなかったようだ。
QListWidgetItemの実装を眺めたけどsetData()で結局 model->itemChanged(this)を呼び出してるから
それでいいんじゃね?
ちなみにQListModel::itemChanged()内で再度 emit dataChanged(idx, idx)を呼び出しているようだ。
ただし知ってると思うけどQlistWiget系は追加するたびに
再描画が発生するからフォルダ表示的な用途にはおそすぎて使えない。 で、カーソルの保持が消滅する件だけど、
私がやったのは初期表示とテキスト検索やボタンチェックで
表示リストを絞り込むような事を実装したから
元々カーソルの位置を保持する必要はなく、正直やってないのでわからない。
アイコンは2万件ほど登録したけど問題なく表示できる。
ついでにいうとAbstructItemModelは画面に表示されるアイテムの文だけしかアクセスしてこないので、
modelはデータをオンメモリで全部保つ必要はない。 一先ず
QListViewを派生して、 QListView::dataChanged を public から call できるようにして、
modelからの emit の代替にすることにしました。
次点としては
QListView->viewport()->update() を 適時call でも いけそうです。
嵌っていた点は、クロススレッド で emit(というか signal?) が 保証されてない点でした。
真っ当に対応するなら、クロススレッドの橋渡しを実装なのでしょうが、
スレッドまわりが理解できておらず厳しいです。
ひとまず納得できました。
お付き合いしてくださった皆様ありがとうございました。
>>555
> modelはデータをオンメモリで全部保つ必要はない。
これが、ちょっと気になったのですが、
全部登録しないと件数(というかスクロールバー)が不整合状態になりませんかね? >>556
QListViewやQTreeViewはダミーノードに対する子要素のかたちで全体の要素数を指定することになるが、
そのときに全件相当する数値を返すだけだからオンメモリでデータを持つ必要はない。 >嵌っていた点は、クロススレッド で emit(というか signal?) が 保証されてない点でした。
あと、こういうときはQFuture/QFutureWatcherを使おう。
まともにマルチスレッドを手作りするのは馬鹿らしい。 invokeMethod を使用することで thread 越えできました。
auto index = item->index();
//emit item->model()->dataChanged(index, index);
auto arg = Q_ARG(QModelIndex, index);
QMetaObject::invokeMethod(item->model(), "dataChanged", arg, arg);
これで、model 側から view をcallする必要がなくなりました。
>>558
> QFutureWatcher
document をざっと見た感じ、thread の進捗管理関連しか分かりませんでした。
もう少しヒントになりそうなワードないでしょうか? invokeMethod を使用することで thread 越え
これFAQだけど禁止されてなかった? QtConcurrent::Run()でworkerに仕事させるのが基本。
それから
1. 戻り値のQFutureをコレクションに蓄えてあとで使う
2. QFutureWatcherに設定してSIGNALを発行してもらう
のどちらかで処理するのがQt流。
[2]の場合はQFutureWatcherはコピーコンストラクタがないので
何かのオブジェクトにメンバ変数としてぶら下げる必要がある。 タッチパネルでTsLibを使ってるんだが
QMLでMouseAreaのonPressedは呼ばれるけど
onReleaseやonCanceledが呼ばれないことが稀にある。
Butttonも同じで押しっぱなしになることが。
TsLibの問題なのかよくわからないけど対処法は無いの? Linuxなら/dev/event 当たりを観察して調べたらいいんでないの?
ピュアQtでWindows/Linuxでタッチパネル対応やってるけど今のところ致命的な不具合はない。
強いていうとダブルフィンガーのスライドの検出の精度が不十分で
指一本と判定される場合が結構ある。 改めて聞かれると微妙なのでもう一度確認は必要だけど
input/eventは必ずReleaseまで出てるように見えていたと思うが
Qtを通さずダイレクトに監視した場合なので
Qtがイベントを取りこぼすことがあるのかと。 QML を触る人はドライバ寄りの知識が浅い
というあるある偏見発動中
まぁオレも似たような状況でEvent 拾って試してるうちに、
素のXで試したりして横方向への理解は深まったけども >>545
qmake が賢くないことの言い訳にもなってないな タイトルからしてつまんなそうというか
興味がなさ過ぎて見る気も起きない ダウンタウンの番組で1番面白かったと思うけど
まあどうでもいいわ 存在すら知らないしダウンタウンそれほど好きでもないから
最初からどうでもいい >>567
Qt/QMLはデスクトップとモバイルのどちらもまともに動かないから止めた方がいいよ。 >>576
人の言うことを聞かない上の人間の絶対命令でね QMLはスクリプトだからさっと書いて動かせるのがいいところだけど、
やっぱコンパイルしてネイティブコードにしないと実行すると遅いよね。 >>578
それでQML Compilerってのがあるけれど商用でしか使えなくしている。 スクリプトならpyqtが最近便利だね。pythonのguiでは一番使われているんじゃない? >>580
QMLはスクリプトだと言ってもUIしか作れない、
何かちゃんとしようとしたらC++で書かなくてはいけないので、
pyqtの方が格段に優れている。 >>579
単独で販売してたらバカ売れしそうだが、結構面倒臭いライセンスなんだよな http://blog.qt.io/blog/2018/02/22/qt-roadmap-2018/
pythonに力を入れるのは意外だな
QtCreatorのpythonサポートはちょっと楽しみ
補完や定義ジャンプはjedi使うんかな?
javascriptの補完って自前でパースしてると思うんだけど今だとtypescriptのtsserver使うという手はないのだろうか PythonによるQtは一時期触ってたんだけど、
結局手続き的にUIを構築していかないといけないから
Qt Creator のuiデザイナーとか使えないし、
逆に不便に感じるんだよな。 >>585
uiファイルをdesignerで作ってpyqtのuic.compileUi使えばええやん っていう情報を拾いにくいってことになる
python 知らんけど 当時はjavascriptがアホみたいに流行ってたからしゃーない 5.10でqt3d.animationてのが入ったみたいでとてもきになるのでインストールしてみたんだけど
サンプルないよね?
俺のインストールの仕方が間違ってる? >>591
すみません、
Qtをインストールするとサンプルも入っているのは知っています。
qt3d.animationのサンプルないよね?の意味でした ???@???
fluxやってからQtやると、シグナル飛んで、それ契機にコントロール更新されて、それでまたシグナル飛んで、その時に順序によってはスロットの要求する仮定崩れるから、メソッド呼び出す順序を注意深く並び替えて、みたいな昔ながらのGUIでありがちなやつが、辛くてもうね
1:45 - 2018年3月7日
☝ほんとコレ(´・_・`) 昔ながらのGUIでありがちなも何も、
昔ながらのGUIツールキットだからねQtは。
何を勘違いしてるのか知らんけど。 セマフオとか多用しまくってるのかな?
一連のシーケンスを機能単位でモジュールに分けて
Signal/Slotはその橋渡し程度でしか使ってないからそんな苦労してないな Windows7、visualstudio 2017 community がインストール済みの状況で
最新のqt creatorとQt5.10.1をインストールしたのですが
MSVCのコンパイラが自動検出されません。
MinGWではなくMSVCを使いたいので検出させたいのですが
ググっても全く情報が得られず、どうしたら検出できるのでしょうか? ■ このスレッドは過去ログ倉庫に格納されています