【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 18©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
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/ QMLはあんまり触れてないけど、SIGNAL/SLOTに相当する機能あるんじゃないの?(update とか)
明示的にSIGNAL発行しないと更新されないのであれば、
それはそれでお粗末な仕様だけども QtってC#とかより面白よな。なんでもっと売れないんだろう。
やっぱ、何の社会でも金がものを言うなw なんか日本ではプログラムはオタク系のものになってて
本も全部そういう思考で書かれてる。
元々プログラムもセンスある人がトップに入れるものなんだろうけど、
日本はそういう人いないみたいだね。
入門Qt4みたいなセンスがあり、本来のプログラミングの楽しさも味わえる本が日本でも
出てくるといいね。 高い金だして、文系の書いたような本ばっか買って、アホミタイ Qtの関数は、時々ヤバい不具合の起爆剤になってるから
便利だからと言って過信できない点が怖い Qtつまらないよ
Linuxだと他にまともな選択肢がない GUIツールキットはつまらなくていい。
変な動作をされるよりは。 QML使いだしたけどちょっとしたオブジェクトの生成も別ファイル用意するか文字列の引数でコード渡すのか
もっとサクッとできないものか >>869
golang勉強しようかと思ってたがもしかしてC++で事足りるのかな? wtとtreefrogのどちらがよいでしょうか?
LAN内のPCからのみ動画を閲覧できるwebサービスを作る予定です QMLを使ってiOSで動かしてるんだけどスクロールがガクガク何だがどうしてだろう
QMLの描画エンジンのフレームレートを制御する方法ってあるかな? 元々QMLはJavaScriptで動くのが基本なので遅い。
さらにiOSはJavaScriptのJITが無効なのでなおさら遅い。
解決策としてはQMLをネイティブコンパイルする。 QMLの遅さの原因はそこだけじゃない
構造そのものがおかしい まともな定義とはなんぞ
モバイルアプリって範疇なら組込みLinux / Windows も含まれるよな
まぁLinuxデスクトップ相当のUIならそのままAndroid/iOSでもほぼそのままで動くけども >>898
作れるけどそれぞれネイティブで作った方が早いんじゃないの?って気になってくる 速度の話をすればQt使わない方がもちろん速いけどね iOSはともかくとして、鈍重なAndroid SDKをバイパスして
Skiaに直結できるQt 製アプリのほうが高速な可能性まであるぞ。
まあライセンスの問題はどうにもならないけどね。 Qtのスマポってvoid使えないんだな
全部Qtで統一してきたのにそこだけstd:shared_ptrになって不格好 void ポインタ使うのが不格好なのでは?
あまりにも型変換が自由すぎる そもそもQtほど型・インターフェイス継承きっちりやってるライブラリもないのに、
型無視してスマートポインタを使ったら片手落ちだろ。
自動破棄できなくないか。 >>873
QAbstractListModelを使えばデータが変わればGridViewに自動的に描画される。
QAbstractListModelを継承したクラスの実装が間違っていてデータ変更をシグナルで通知していないからだ。 c++20でc++11並に機能が強化されるし最早gui部分以外にqt使いたくないよ プログラム内で呼んだ関数の戻り値一切テストしないプログラムとか書く方が難しそう 例外の難点は想定しうるエラーを把握しにくい点だな。 いちいち戻り値を検証するより例外を投げた方がパフォーマンスは良い
バイナリサイズやメモリ容量の制限が厳しい環境でなければバンバン投げるべき 使ってないね
使ってたら死ぬほど使いにくいものになってただろうな Qtは古いコンパイラや組み込み向け環境にも対応しているから
Q_COMPILER_NOEXCEPT オプションがある。
このフラグは手で設定するものではなく通常Qtのビルド時に
コンパイラのバージョンから自動認識されるものだが手で設定することもできる。 動画を表示するにはQImageをタイミングよく切り替えるといったものが紹介されているのをよく見ます
私が勝手に動画を表示するにはOpenGLと思い込んでいたのですがQImageでもパフォーマンスに問題は無いのですか? デコードのタイミングでGPUを使う手段があるのであって、
そのデコード結果の画像を表示する際に、QImage を使ってるのでは
OpenGLで画像を貼り付けることも可能だろうけど、
そのためだけにそれを使うメリットは門外漢なので思い浮かばない インストールの話なんですが、PythonからQtを使う場合と、C++から使う場合では
インストールするQtは、Python版、C++版をインストールする必要がありますか? え?
OSによっては一度のインストールで済んだり、別々にインストールする必要があったりするんですか? 不親切な対応と思って質問返ししてるのだろうけど、実際必要な情報なんだよ 超久しぶりにインストールしたら、qt 3d studioなるものがインストール欄にあったけど、なんなのこれ?
ソフト開発したら、どういう風に使えるものなの? 質問させていただきます。
ソースコードは長いので、内容を説明させていただきます。
std::threadを使って、重い計算処理を分割して実行し、最後に結果をまとめるということをしています。
通常、実行には6秒くらいかかるのですが、各スレッドから呼ばれるfuncという関数内で
qDebug()を入れて適当な文字を出力すると、0.7秒で完了します。
スレッド数はどちらも8でかわりありませんし、そのほかのソースコードは何一つ変えていません。
qDebugを入れることで何かコンパイルの条件等が変わるのでしょうか。
Qt5.11です。 Qtはオブジェクトの寿命を独自で管理してるから、std::thread
じゃなくてQt::concurrentを使ってくれないか。 なんでそんな「ホモ以外は帰ってくれないか」みたいな言い回しなんだ・・ qDebugは変なコード(localeと合わないエンコードとか)送出すると
コンソール上で異常発生してプログラム終了するときがあるから
デバッグしようとしてそれが原因で目的よりも前のところで落ちる
全然デバッグにならないよω ツールバーをカスタマイズするダイアログってどっかに転がってない? ラムダ式にconnectするのってラムダ式のスコープ外れたらラムダ式ごとコネクションも消えるのかと思ったら残るんだな
非同期難しいわ 何でもQObject継承させて親子関係の連鎖で管理するのとスマートポインタ使うのだとどっちが効率いいんだろう?
とりあえずシグナルを使うクラスだけQObject派生にしてるんだけど アプリの中でキリル文字(ロシア語)が全角文字で表示されてしまう問題があるんだけど、
どうやったら回避できるか知ってる人居ない? >>944
日本語フォントを使ってるんじゃない? キリル文字を表示できる欧文フォントに変更すれば解決できるはず >>945
自動生成される ui_**.h を見る限り、フォントが指定されているように見えない。
海外版のWindowsだと問題ないのかなあ? VB6 から Qt に移行したら、ビルドの遅さに四苦八苦・・・
でも、ccache を導入したら、かなり快適になったで〜 【IT】青梅市のHP開発委託で驚きの記述「CMSにオープンソース(PHP・js・CSS・Linuxなど)を使用するな」「機能追加を無料で行え」
https://asahi.5ch.net/test/read.cgi/newsplus/1561784504/
青梅市ホームページシステム再構築業務委託仕様書のCMSの項目に目を疑う記述。
「なお、オープンソースの使用は認めない」
https://www.city.ome.tokyo.jp/keiyaku/documents/homepageshiyousyo.pdf あるページを見ていて
/// アイコン ダブルクリック時のメッセージ表示動作シグナル/スロット接続
connect(this, &QSystemTrayIcon::activated,
[this](QSystemTrayIcon::ActivationReason reason){
if (reason == QSystemTrayIcon::DoubleClick) {
Message();
}
}
);
という部分があります。で、connectの3番めと4番目の引数の所の[this]以降が自分が理解できません。
https://qiita.com/sazus/items/88daf4949cac06529f88
↑のページです。
どの様なキーワードでググれば答えが見つかるでしょうか?キーワードさえ教えていただければ
後は自分でググッて調べますので。
よろしくお願いします。 QSystemTrayIconがアクティブになった理由がダブルクリックされたというからということはもちろん分かります。
[this]の部分とその後のJavaの内部クラスみたいな書き方の名称がわかりません。 [this](〜){
:
}
はthisが示すオブジェクトにアクセス可能なラムダ式を引数にしてるってことだと思う
C++ ラムダ式
とかで検索すれば出てくると思う
Qt特有の何かってわけではない それはラムダ式だよ。
要するに他の言語でも存在する無名関数を定義してるだけ。
Qt4だと名前ベースのconnectしかできなかったけど、
Qt5からはラムダ式含む識別子ベースのconnectができるようになった。 この拡張のおかげで以前は滅多に使わなかったラムダ式を多用するようになったわ FakeVimってカーソルを行末+1文字まで持っていったり(set virtualedit=onemore)、
行末で右に移動したら次の行の先頭に移動するような設定ってできない? >>956
なんとなくわかります。どうもありがとうございました。
>>957
Qt5からはラムダ式を含む式をconnectに含める事ができるようになったのですね。
どうもありがとうございます。ラムダ式って要するに無名関数なのですね。ありがとうございます。
お二人、遅くなりましたが、ご回答どうもありがとうございました。 >>959
宝くじもにてるよ。俺は4と9の数と関連があるのが、来るような気がしてますが、
サマージャンボは番号選べないからね。。。 ボタン(ウィジェット)からマウスカーソルが離れた時を検知するにはどうすればいいですか?
QHoverEventあたりではないかと考えています。 Windowsのと比べて使い勝手悪いけど、特定のウィジェットのイベント発生をログに書き出すことができるよ。 enterEvent、leaveEventだと思うけど、
見た目を変える程度ならスタイルシートでやるのが簡単だよ Qt って GTK の仮想端末ウィジェット Vte に相当するウィジェットってあるのですか? Vteがどこまで機能を提供してるか知らんが
シリアル通信用のQTerminalというのがあるが、
それをQText*系の汎用的なテキスト表示用Widgetに張り付ける
gnome-editor みたいな自身のファイルシステムを操作するような widget を求めてるなら、
コマンド入力を編集として受け付けて、enter 入力イベント拾ったら、そのままコマンドとして実行、
その結果のテキストを張り付けるだけ
チュートリアルでありそうなレベル
(公式はなかったと思うけど、lxqt の標準端末の qterminal ならある) なるほど、QTerminal ですか。近そうな感じです。
私が GTK で実現しているのは、小さな仮想端末の窓を含んだアプリです。
アプリは単なる計算プログラムのフロントエンドで、引数を付けてプログラムを Vte に投げます。
すると、計算プログラムが逐次に標準出力に出す経過が、リアルタイムで窓に表示される。
リアルタイムでなければ、終わってからで良いなら、 TextView ウィジェットでも可能です。
でも、計算によっては数分かかるケースもあるので、進行状況が分かるリアルタイムにしたいのです。
そうなると、 Vte しかないと思うのです。
こんなのが Qt でも実現できるのか、が知りたかった。もしできるなら書き変えたいと思ってます。
普段はUNIX系で GTK で問題ないのですが、Windows に持って行けなくて困まります。
Qt ならそのあたりにアドバンテージがあるかなぁと。 前者の qterminal は QSerial だった
つか、単純にその機能の実現であればただの pipe だし
ツールキット使わなくてもできる(使ってもできる) レス数が950を超えています。1000を超えると書き込みができなくなります。