X



【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 19

0001デフォルトの名無しさん
垢版 |
2019/10/24(木) 13:32:07.93ID:rWKhVVJ5
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 総合スレ 18
http://mevius.5ch.net/test/read.cgi/tech/1488948543/
0124デフォルトの名無しさん
垢版 |
2020/09/28(月) 22:01:36.75ID:iMi4NbKw
class myClass : public QObject{
Q_OBJECT
private:
 QThread* th;
public:
 myClass();
 virtual ~myClass(){}
pulic slots:
 void fin();
signals:
 void thread_quit();
};

myClass():th(new QThead()){
 connect(
   this,
   &myClass::thread_quit,
   th,
   [&]{ th->quit(); th->wait(); delete th; }
 );
 moveToThread(th);

 // other initializations

 th->start();
}

void myClass::fin(){
 moveToThread(th->thread());
 emit thread_quit();
}
0127デフォルトの名無しさん
垢版 |
2020/11/10(火) 19:11:21.45ID:hiC/5cy6
>>121
Qt6はPerl6と同じ運命を辿るという予言ですね?
で、Qt5がforkして新たなQt史が始まるのです・・・
0132デフォルトの名無しさん
垢版 |
2020/11/26(木) 15:13:32.69ID:mHPCh9BG
>>131
数年前にクロスプラットフォーム下でwxWidgetsを試したけど、
環境の差異を自前で解決する必要があるっぽかった。(CMakeとか?)
Qtはqmakeがあって楽。
0134デフォルトの名無しさん
垢版 |
2020/12/03(木) 02:03:34.69ID:YAQUOpck
Perl6を検索したら
じんめんちょうとケモミミメガネっ娘イラストが出て来たでござる
0137デフォルトの名無しさん
垢版 |
2020/12/04(金) 14:27:23.48ID:73vN5HmW
新しく勉強する人はQt4用と古くなってしまったが、オライリーの本でいいの?
0140デフォルトの名無しさん
垢版 |
2020/12/08(火) 23:04:24.86ID:9BQY2QjS
Qtだからって必ずマルチで動かさなくてはならないということも無いんじゃね?
オレはMFCより使いやすそうだからQt使ってるだけだし・・・
0141デフォルトの名無しさん
垢版 |
2020/12/09(水) 12:04:19.16ID:FeP1mPcl
初期KDEに感動してQtカッコいいと思っているが動機かな。
LinuxとかはQtアプリがメインになればいいのに、と思っていますが、思っているだけです。
0142デフォルトの名無しさん
垢版 |
2020/12/11(金) 20:38:19.71ID:W8JmW3Wr
PyQt5スレで質問したが過疎化しているみたいなのでこちらでよろしく。

ラズパイでPyQt5にてソフトを作っていますが、ラズパイごと販売する場合、ソースリストがPythonなんでソース公開になりますが、これでも商業利用だとライセンス違反になりますか?
0143デフォルトの名無しさん
垢版 |
2020/12/11(金) 23:07:53.61ID:Xb6Q9kn/
>>142
GPL版のpyqt使ってるなら自分の派生コードもGPLにしないと駄目というだけて、商用非商用関係ないんじゃないの
0144デフォルトの名無しさん
垢版 |
2020/12/12(土) 06:12:15.22ID:0FYow1gT
>>143
ありがとうございます。
自分のもGPLにするので大丈夫ですね。
販促品なので良かったです。
0145デフォルトの名無しさん
垢版 |
2020/12/15(火) 00:30:57.81ID:qJ1aFYR/
Qtのツールキットってどうやって作ればいいの?
WindowsのQtからラズパイをLANでつないでクロスコンパイルして、デバッグまでしたいのだけどどうやって検索すればいいのかすらわからない・・・
と言うか、ラズパイだとVisual StudioからC#で作った方が楽なんだろうか・・・
0147デフォルトの名無しさん
垢版 |
2020/12/15(火) 09:51:29.29ID:x2jnVkC/
そのままググればいくらでも出てきそうだけど
無理しなくてもセルフコンパイルでできるんじゃない?
0148デフォルトの名無しさん
垢版 |
2020/12/16(水) 13:42:42.43ID:+Vs3RHJW
Qt6キタ━━━━(゚∀゚)━━━━!!
0149デフォルトの名無しさん
垢版 |
2020/12/16(水) 15:43:52.63ID:QJd1nMyw
>>145
「Qtのツールキットを作る」
という言葉の意味がいまいち分からない。
Qt自体がツールキットなのだが、それにさらに何かをかぶせた
独自ツールキットを作るという意味か?

>WindowsのQtからラズパイをLANでつないで
これも、Qtはライブラリであって完成したプログラムではないので
それにLANを繋ぐということも意味が分からない。
0150デフォルトの名無しさん
垢版 |
2020/12/17(木) 00:47:02.12ID:2qkNMdZn
>>146>>149
ツールキットって
プロジェクト作る時に
mingWIN64かVisualStudio2017か選べるようにするじゃん
そのキットのこと
なんかウインドウズ上でもラズパイ用のキットが作れそうだと思ったの
0151デフォルトの名無しさん
垢版 |
2020/12/17(木) 09:55:24.94ID:hrUJzhO1
>>150
ツールキットって言ってもなにか特別なことをしているわけではなく、ライブラリと設定の集まりだから

1.クロスコンパイラをインストール
2.Qtの依存しているライブラリをクロスコンパイル
3.Qtをクロスコンパイル
4.Qt Createrのオプションメニューでコンパイラやライブラリパスを指定してユーザーカスタムツールキットを作成

でいける。2.が死ぬほどめんどいからお勧めはできない。特にWindowsでは。
0153150
垢版 |
2020/12/21(月) 23:40:40.25ID:e1k6bUCY
二人ともありがと
なんか難しそうだなぁ
vcpkgも難しそう
cmakeとかやったこと無いよ・・
0154デフォルトの名無しさん
垢版 |
2020/12/22(火) 11:01:32.42ID:RyG/lCSq
>>153
素直にセルフコンパイルしたほうがいいよ。Qtわりかしクロスプラットフォーム性あるんだしWindows使いたければ普段Windowsで開発して必要に応じてラズパイにソース移せばいい。
環境依存する部分あるから無理っていうなら、そもそもそんなもんクロスコンパイル出来ないでしょ。多分
0157デフォルトの名無しさん
垢版 |
2020/12/25(金) 12:14:18.15ID:5DQjcGeE
どなたか御教授おねがいします。いろいろググってもそれらしい記事にヒットしませんでした。

QtでFrameなどのウィジェットを書き換え→印刷→書き換え→印刷....と連続で行うことは可能ですか?
QtでSQLiteのフロントエンドを作ってカード型データベースを作ろうと思っているのですが、
検索結果10件のレコードがヒットして、1レコード1枚の印刷をしたい場合は如何したもんかと悩んでいます。
よろしくお願いします。
ちなみにPyQtです。
0159デフォルトの名無しさん
垢版 |
2020/12/28(月) 11:07:17.58ID:UlDvGW4N
>>158
ありがとうございます。
QPrintDialogをループ前に呼んでループ回すごとにQPrinterクラスに描画&印刷って感じですか?
0162デフォルトの名無しさん
垢版 |
2021/02/08(月) 23:33:54.93ID:dQ8TTNE6
直リンは無いけどアーカイブ上に存在する
Qt5.12.10のオフラインインストーラは使ってもいいんだよね?
(ちなみに、LANケーブル引っこ抜いてオフライン状態にしたら、
未登録でもインストール出来てしまう...まあ、オフラインインストーラなんだから
あたりまえかもしれないが)
0164デフォルトの名無しさん
垢版 |
2021/03/06(土) 02:15:34.82ID:t6oqPQ7k
>>162
直リンあるぞ
ダウンロードサイトから薄ーい色で書いてあるOfflineのところからクリックするとそのページに行く
0165デフォルトの名無しさん
垢版 |
2021/03/06(土) 02:18:11.20ID:t6oqPQ7k
何かうちの会社がやるとき一人年間6000ドルとか言われて
急いで決めなきゃいけないのに稟議面倒くさくて結局止めちゃったのに今そんな金額なのかよ
0167デフォルトの名無しさん
垢版 |
2021/03/06(土) 08:17:14.46ID:N1UPRC8r
>>164
ほんとだ!いつの間にか直リン出来てるわ
以前は無かったんだけど、サイト更新前だったのかなぁ・・・
0168デフォルトの名無しさん
垢版 |
2021/03/07(日) 00:20:31.78ID:XG5iDLD/
5.15.3は以前のアナウンスの通り商用オンリーになってしまったな
もしやQt5.15にもフォークの嵐が!?
0170デフォルトの名無しさん
垢版 |
2021/03/09(火) 00:52:53.42ID:jPxQYiua
QMLってロジック部分もQMLなの?
なんか解説サイトは入門しか無くていまいち理解出来ん
0171デフォルトの名無しさん
垢版 |
2021/03/09(火) 01:36:59.88ID:2EcPBb3J
俺もまだ入門読んでる段階だから分からん
けど複雑な部分はJavaScriptで書くらしい
0174デフォルトの名無しさん
垢版 |
2021/03/09(火) 08:38:43.07ID:HV3G9kxd
ファイル入出力とかはC++でUIがQMLロジックのほとんどはJS
最近慣れてきてやっとQtQuick悪くないと思えてきた
0175デフォルトの名無しさん
垢版 |
2021/03/09(火) 14:13:02.45ID:iP4nVCks
痛いのは最初だけ
0177169
垢版 |
2021/03/09(火) 19:54:34.95ID:SIG6GrEl
知らん
qt quickならMaterialテーマとかが使えるから、そのためにQMLの入門ブログ一通り読んだけど
調べたところPythonからでもMaterialテーマ(に近いもの)は使えるみたい(qt-material)
つまるところ徒労だったわけだが、折角QMLを学んだので使ってみようと思う
ちなみにQMLで良いなと思ったのは、親要素の高さと幅に対するパーセンテージで子要素のジオメトリが指定できるところかな
0178デフォルトの名無しさん
垢版 |
2021/03/09(火) 19:56:35.86ID:SIG6GrEl
体性

>パーセンテージで指定できる
正確にはJSで「parent.width * 0.8」とか書く
0179デフォルトの名無しさん
垢版 |
2021/03/09(火) 19:57:23.58ID:SIG6GrEl
×体性
○訂正

グダグダですまn
0180デフォルトの名無しさん
垢版 |
2021/03/12(金) 17:24:50.76ID:SLhJb7L+
mousePressEventでevent.x()とevent.y()の座標からWidegetのgeometry()の範囲の場合はWidget上でタッチしたと処理をしていました。
WidgetをTabとかGroupに置いたらgeometry()は、親Widgetからの相対位置になりましが、MainWindowの座標値からにするにはどうしたら良いのでしょうか?
0181デフォルトの名無しさん
垢版 |
2021/03/12(金) 20:51:37.44ID:NAIHKCkj
>>180
QWidget::mapTo() メソッドで変換すればええと思うよ

例えば、2枚の QFrame をスタックして、上に重なっている frame_2 の左上の
位置を MainWindow のクライアント座標に変換するには

QPoint point = ui->frame_2->mapTo(this, QPoint(0, 0));

で求まる

もし、MainWindow のフレームも含めた位置が欲しい場合は(通常必要ないと思うが)、

フレームの幅 = geometry().topLeft().x() - x()
フレームの高さ(タイトルバーの高さを含む) = geometry().topLeft().y() - y()

を先ほどの point.x(), point.y() にそれぞれ足せばいい
0182デフォルトの名無しさん
垢版 |
2021/03/12(金) 21:12:38.77ID:NAIHKCkj
>>181
■ 追記
元々は centralwidget が親だったのだろうから、
this (MainWindow) じゃなくて ui->centralwidget の方が正しいかもしれない
0183デフォルトの名無しさん
垢版 |
2021/03/12(金) 21:33:46.50ID:SLhJb7L+
>>181
ありがとうございます。
C++じゃなくてpythonでどう書けば良いのかわかりません。
PyQt5とraspberry piなんです。
0187デフォルトの名無しさん
垢版 |
2021/03/12(金) 23:35:27.97ID:NAIHKCkj
>>186
Python 知らないから PyQt5 については何とも言えないけど、
順番にたどる必要はないと思うよ
要は、groupBox の上に乗せたせいで geometry の基準が変わってしまったから、
mapTo で centralwidget 基準に変えてあげる感じかなぁ
俺自身も勉強中なんでうまく説明できませんがw
あとは試行錯誤してね
0188デフォルトの名無しさん
垢版 |
2021/03/13(土) 10:39:09.49ID:4YFPPFoi
>>187
何とか出来ました。
通常は最大化して、MainWindowの(0,0)位置と画面(0,0)は一致しているけどdebug時はWindow表示なので以下の方法にしました。
# MainWindowの(0,0)の物理座標
main = self.mapToGlobal(QPoint(0,0))
#widgetのgeometory(widthとheightが欲しいだけ)
geo = self.ui.widget.geometry()
# widgetの(0,0)の物理座標
widget = self.ui.widget.mapToGlobal(QPoint(0,0))
# MainWindowとwidgetの相対位置を求める
px = widget.x() - main.x()
py = widget.y() - main.y()
if (event.x() > px) & (event.x() < px + geo.width()) & (event.y() > py) & (event.y() < py + geo.height()):
widgetをタッチした処理

QLcdNumberをクリックしたら数値入力のダイアログが出るようにしたかっただけです。
0190デフォルトの名無しさん
垢版 |
2021/03/19(金) 22:13:08.50ID:KNxdQ/y/
>>188
今更だけど、QLcdNumber をサブクラス化して自前で clicked シグナルを
実装すれば行けるんちゃう?
mousePressEvent と mouseReleaseEvent を使うんやで
0192デフォルトの名無しさん
垢版 |
2021/03/20(土) 08:21:48.45ID:SCCZ0sPW
>>191
オープンソースの情報共有は大事やけ、サンプル作ってみたわ
C++ だけど参考にしてな
(ただ、改行数に制限があるから小出しにするで)

まず、マウスの左ボタンを押したときの処理や

void CClickableLCDNumber::mousePressEvent(QMouseEvent *e)
{
QLCDNumber::mousePressEvent(e);

if (e->button() == Qt::LeftButton && rect().contains(e->pos())) {
m_leftButtonDown = true;
}
}

マウスボタンが押された判定だから、一見領域判定必要ない気もするけど、
先に右ボタンを押したままの状態にすると、領域外で左ボタンを押した際に
mousePressEvent が呼ばれてしまうから、一応領域判定を入れてみたで
0193デフォルトの名無しさん
垢版 |
2021/03/20(土) 08:24:45.80ID:SCCZ0sPW
おお、インデントが無くなってしまう...まあいいか

次に、マウスの左ボタンを離したときの処理や

void CClickableLCDNumber::mouseReleaseEvent(QMouseEvent *e)
{
QLCDNumber::mouseReleaseEvent(e);

if (m_leftButtonDown && e->button() == Qt::LeftButton) {
m_leftButtonDown = false;

if (rect().contains(e->pos())) {
emit clicked();
}
}
}

領域内でマウスの左ボタンを離すと clicked シグナルを発生させるで
0194デフォルトの名無しさん
垢版 |
2021/03/20(土) 08:29:47.70ID:SCCZ0sPW
最後に、マウスの左ボタンを押している最中にアプリケーションが
非アクティブになった場合の処理や

void CClickableLCDNumber::guiApplication_applicationStateChanged(Qt::ApplicationState state)
{
if (state == Qt::ApplicationInactive) {
m_leftButtonDown = false;
}
}

コンストラクタ上に次の 1 行を記述して上記のスロットに接続してな

connect(qApp, &QGuiApplication::applicationStateChanged, this, &CClickableLCDNumber::guiApplication_applicationStateChanged);

なぜ必要かというと、非アクティブになった際に mouseReleaseEvent が
発生しないからや
だから、アプリケーションが非アクティブになったことを検知したら、
強制的に m_leftButtonDown フラグを false にしているんや

もしかして、間違っているところがあるかもしれないから、
ちゃんと動作確認しておくれ
ほな、またな
0195デフォルトの名無しさん
垢版 |
2021/03/25(木) 18:45:41.30ID:PZzyM+xs
全然スレが進まないから、経験した不具合でも書き留めておくか
パスが深い状態でビルドしたら、エラーも出ずに無限ループ状態になったわ
ご参考までに
0196デフォルトの名無しさん
垢版 |
2021/04/05(月) 23:35:47.54ID:KnjD4N4/
もしQtのオープンソース版が無くなったら、
やっぱりGTKに避難します?
今なら.NET 5.0 C#+GTKかなぁ
GTKって依存関係が複雑らしいですが・・・
0198デフォルトの名無しさん
垢版 |
2021/04/05(月) 23:58:16.91ID:KnjD4N4/
やっぱりそうですよね
うちの会社超貧乏なんで(つうかケチw)
オープンソースの開発ソフトを使ってるんです
あとで試してみますわ
0199デフォルトの名無しさん
垢版 |
2021/04/06(火) 00:01:30.46ID:Zjz/AYhL
いや、俺ならってだけだよ
今やってる組込Linuxだと、メモリがとストレージがギリギリしかないからQtの無料版で頑張ってるし(CPUも.Netを駆動するほどパワーない)

ただ、メモリもストレージもあるんだったらQt嫌いだから.Netってだけで、
0200デフォルトの名無しさん
垢版 |
2021/04/06(火) 00:08:19.94ID:mC+OcVeH
素のC++使うこと考えたらQtって結構いいと思いますが、
まあ、ひとそれぞれですから
(ただ、Qtってランタイムのサイズが大き過ぎるのが気になりますけどね)
C#使ってみて気に入らなかったらQt使える間はQtで
次はgtkmmにするかも・・・C+GTKは流石にキツイので
0202デフォルトの名無しさん
垢版 |
2021/05/28(金) 19:15:57.36ID:YeTIq8k4
遂に Qt5.12.11 からオフラインインストール出来なくなってしもたか・・・
これからは、GTK みたいに MSYS2 使ってインストールするのが主流になるのかな?
それともみんな自前でビルドしてるん?
0203デフォルトの名無しさん
垢版 |
2021/06/16(水) 15:38:33.15ID:VrNuOB3Y
MFCに似てるといわれてたからwxWidgetsは今まで使わなかったけど、
実際使ってみたら以外に使い易かったわ
Qtのライセンスが今後どう転ぶか分からないから、
選択肢を増やしておいたほうがいいよね
0204デフォルトの名無しさん
垢版 |
2021/06/29(火) 22:54:40.56ID:MW8nuyaY
MouseAreaとMultiPointTouchAreaを重ねて、タップしたときに両方のonPressedを発生させるみたいなことって出来ないんですかね?
イベントを処理した上で、更に親クラスにも伝えたいんですが
0206デフォルトの名無しさん
垢版 |
2021/07/14(水) 17:34:15.43ID:5iDWVKzR
Qtが出た時程は話題もないから。
KDE が Windows11ぽいから、頑張ってみてもいいと思うよ。
0207デフォルトの名無しさん
垢版 |
2021/07/15(木) 09:12:20.33ID:Gtu2qr9m
あのライセンス形態では多分衰退していくわ
昔と違ってマルチプラットフォーム環境は他にも選択肢増えてるわけだし
0208デフォルトの名無しさん
垢版 |
2021/07/15(木) 10:19:54.61ID:hSEzNJoj
無料版の制限が厳しいよね
オープンソースにしてQt側に何かメリットあったんだろうか
0210デフォルトの名無しさん
垢版 |
2021/07/29(木) 21:06:17.08ID:5HPBKh3H
昔はQtのクロスプラットフォームという謳い文句に夢があったね
0214デフォルトの名無しさん
垢版 |
2021/07/29(木) 23:18:21.25ID:JvH/1VXG
LinuxのGUIアプリ作りたいんだって
C++出来るから手伝えって言われたけど
別の仕事で忙しいから断った
0216デフォルトの名無しさん
垢版 |
2021/07/30(金) 01:44:28.79ID:AGz2ssQM
愚かな・・・なんて愚かな・・・
0219デフォルトの名無しさん
垢版 |
2021/08/12(木) 12:37:16.42ID:IQbnDzVU
なんかQtのblogしばらく更新されとらんな
ライセンス買う人が思いのほか少なくてヤル気無くしたんか?
0221デフォルトの名無しさん
垢版 |
2021/08/13(金) 14:30:59.81ID:NJXjdKtu
世界的に同じ価格だとどんどん貧乏になってる日本にとってはかなり高いライセンス料になってるんだけどそのへん日本法人はなんとかしようと思わんのかね
0222デフォルトの名無しさん
垢版 |
2021/08/13(金) 15:25:04.08ID:Ab0yZIBD
そのうち地球温暖化で人間が住めなくなるのと、食糧難がくるので、日本人の給料が気になる奴は農地を買って、農業始めとけ。
金があっても食料が買えるとは限らん。
レスを投稿する


ニューススポーツなんでも実況