【RAD統合環境】 Qt 総合スレ 8 【Win/Mac/Linux】
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)
こっちはNokia社か日本の代理店(SRA社)とライセンス契約(年間30万くらい?)を結んで使います
■Qt を使って作られたソフト例
KDE、Adobe Photoshop Elements、Google Earth、Skype、DAZ Studio など
■前スレ
【RAD統合環境】 Qt 総合スレ 7 【Win/Mac/Linux】
http://pc12.2ch.net/test/read.cgi/tech/1270309416/
Windows ユーザー向け Tips
・プロジェクトのパスに日本語を入れちゃダメ
・日本語のソースコードは、MinGW版ならUTF-8、VC版ならSystem(Shift-JIS)
プロジェクト作成後に「プロジェクト」タブの「エディタの設定」→「デフォルトの文字コード」を設定すると幸せになれる
・デバッグ出力などが文字化けする場合、プログラムの最初で文字コード変換設定をする
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8")); //ソースの文字コードを指定("utf-8"や"Shift-JIS")
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //同上
qDebug() << "うまく表示できた?";
・MinGW版の配布時は mingwm10.dll も一緒に入れておく(public domain で配布上の制限はない)
■インストール方法:MinGW版Qt & Qt Creator
(1)「Qt SDK for Windows」をインストールすればOK
http://qt.nokia.com/downloads/sdk-windows-cpp ■インストール方法:VisualC++版Qt & Qt Creator
MinGW版との違い:Phononが利用可能。VC版の方がいろいろ速いらしい
(1)「Microsoft Visual C++ 2008」(Express Edition 以上) をインストール
(2)「Microsoft Debugging Tools」をインストール(※Qt Creator上でデバッグする時に必要)
http://www.microsoft.com/japan/whdc/devtools/debugging/installx86.mspx (3)「Qt libraries for WIndows(VS 2008)」をインストール
http://qt.nokia.com/downloads/windows-cpp-vs2008 (4)「Qt Creator Binary for Windows」をインストール
http://qt.nokia.com/downloads/qt-creator-binary-for-windows (5)環境変数PATHを設定(もともと入ってたパス;Qtインストールパス\bin)
(6)Qt Creator を起動して、「ツール」→「オプション」メニューで初期設定
「Qt4」→「Qt Versions」を開いて自動検出された「PATH に含まれる Qt」をクリックし「MSVC バージョン」を 9.0 にする
「デバッグヘルパ」が×印になっていれば「リビルド」ボタンをクリックしてリビルド(※)する
(※)もし失敗したら「プロジェクト」→「ビルドして実行」→「nmake の代わりに jom を使用する」のチェックを外してみる
emit otu
QWebViewが現在開いているサイトと異なるサーバへのリンクを開いてくれないんですが、 何を変更すれば開いてくれるんでしょうか
ウィルスバスターを無効に
サーバが違うからじゃなくてtarget="_blank"が指定されているからでした 失礼しました
これだけレベル低い質問者や回答者が現れるほど裾野が広がったと喜ぶべきか
12 :
デフォルトの名無しさん :2010/08/06(金) 23:19:30
>>11 model = new DomModel(QDomDocument(), this);
view = new QTreeView(this);
view->setModel(model);
proxyModel = new MyTableProxyModel();
proxyModel->setProxyModel(model);
table = new QTableView(this);
table->setModel(proxyModel);
Qt examples の"simple Dom Model" をもとに、QTreeViewの全ての要素(子要素も全て)を
表示するQTableViewをproxyModelを使用して作成したいのですが、よくわかりません。
また、Itemの削除、追加も機能させたいです。可能でしたらサンプルコードを頂けませんでしょうか。
よろしくお願い致します。
貼り付けたコードの著作権は 2ch に移譲されるので 無闇に貼り付けない方がいいぞ
著作権が2chに移譲されたらどうなるのっと
15 :
デフォルトの名無しさん :2010/08/07(土) 00:04:56
おさわりはご遠慮ください。
17 :
デフォルトの名無しさん :2010/08/07(土) 03:38:10
おさわりは private なら無料になります
qt以外のライブラリを使うときに、gccにオプションlを渡さないといけませんが qt creatorではどこで指定すればいいんですか?
>>13 もしそれが問題になったら面白そうだから是非問題を起こしてほしい
2chの対応が見たい
VC2008対応のqt creatorでビルドするとmsvcrt90.dllが依存するけど qt creatorの設定で取り除けないの?
むりぽ
27 :
24 :2010/08/08(日) 17:08:40
>>26 VC++のIDEで開発するときのスタティックリンクはわかるんですが
それをqt creatorからできないのかと思ったので
知らないけど、qtのqmakeは 各makeコマンドのMakefileを出力するだけだから そこらへんをカスタマイズすればいけるんじゃね?
29 :
デフォルトの名無しさん :2010/08/09(月) 10:59:08
ソースコードじゃないけど、5年ぐらい前にそういう判例が出てるから。
31 :
デフォルトの名無しさん :2010/08/10(火) 10:35:16
32 :
デフォルトの名無しさん :2010/08/10(火) 17:52:29
もうMFCやだので(C#もやだ)QtにDataGridViewやFlexGridみたいなワークシートっぽい GUI部品はありますか?あれば乗り換える。
ないよ
34 :
32 :2010/08/10(火) 17:58:03
ええ!JavaにさえJTableがあるのに!! んじゃあ、Qtやめる。
Gridはある夜
テンプレにMinGW版よりVC版の方が早いってあるけど どっかにソースあるの?
9.5MBくらいのファイルを1MB単位でわけたいんですが、 何かいい方法ありませんか?
鼬買い
>>37 簡単なC++ コードを自分で書くんじゃないかしらん
常識的に考えてそれは筆者の能力が凄いんじゃなくて 見ただけで違いが分かるくらい性能差があるって意味だよね
vs2008スタティック版C2491エラーがでて作れないんだけど誰かできた人いますか?
VS2010でbuild出来たひといますか?
46 :
44 :2010/08/12(木) 11:55:08
スタティックリンクできたー! けどphonon使えなかったのか・・
できたならやり方報告してくれるとありがたい
48 :
44 :2010/08/12(木) 12:42:17
よしまとめとこう。 自分の場合はqt-win-opensource-4.7.0-beta2-vs2008.exeをまずインストール。 インストールされたフォルダのmkspecs\win32-msvc2008フォルダの中にあるqmake.confの QMAKE_CFLAGS_RELEASE = -O2 -MD QMAKE_CFLAGS_DEBUG = -Zi -MDd を QMAKE_CFLAGS_RELEASE = -O1 -MT QMAKE_CFLAGS_DEBUG = -Zi -MTd に変更。 src\corelib\globalの中にqconfig.cppをどっかから拾ってきて入れる。※このインストーラでインストールしても入ってない。 同フォルダ内のqconfig.hの最初のほうに#define QT_DLLとあるのでそれをコメントアウト Qt 4.7.0-beta2 Command Promptから nmake distclean nmake confclean configure.exe -static -release -opensource -platform win32-msvc2008 -nomake examples -nomake demos -no-exceptions -no-webkit nmake sub-src を実行でできるはず。
49 :
44 :2010/08/12(木) 12:50:26
あと自分の場合はbootstrap.libがないといわれたのでvisualstudio-addinいれてbootstrap.proをvisualstudioで読み込んでコンパイルして作成 moc.exeもないといわれたので同様に 修正のつどnmake sub-srcを実行 link.objがないというエラーもでたときはmakeされているやつのmakefile.releaseをいじる
スタティックリンクのexeはサイズどのくらいになった?
4〜5メガくらいでした
スタティックリンクにしたら ソースコード公開しないといけないから 使えない。
別にソースぐらいええやん
実装見られるの恥ずかしい///
見られて恥ずかしいような実装してるソフトは大抵ソースを見たがる人は居ないという
まぁ昔も有名なプログラマがオープンソースで何が嫌かというと 実装見られるのが嫌だったり,それを綺麗にするのが面倒だとは言ってたな。 汚い下着を見せるような気分と言っていた。
別に下着ぐらいええやん
qtでハッシュ関数(sha,md5 etc)を利用したいのですが、 簡単に調べて見ましたが見当たりません それらの関数があるクラスをご存知でしたら、教えてください
map
63 :
58 :2010/08/13(金) 23:10:46
どういたしまして
test
ネームスペースをつけずに作ってあとで後悔することってありますか? あとからまとめてつけれませんか?
>>66 ,,.----、
i | | | _____
/ | | | / ヽ
/ / | | | ^o^ | <ネームスペースをつけずに作ってあとで後悔することってありますか?
/ / 人ヽ、 !ー!\_/ヽ、
/ /ノ,,,,,,ヽ、ヾ .|ヾ ゞ / !ヽ`ヽ- 、
/ //、 `,ヽ .| ヾ /ヾ ヾ `ー-- 、
/ // ` '´ ,ヽ||´~~ヽ ヽ、, '"´``.、 .ヽ
| ((ー‐ ● ---.||" ,, i i;;;;" ゛;;;;i |
| ヾ、 ,. ´, 、 || ,/ |ll!!!^!!!lllノ .ノ
ヾ i lヾ i ヾ ,/ |"" ,, 'ヽ ,,, / |
| l l;;;;;`;,,,, ゞ-‐´/ ,,| ゞ`ヾ ヾ |
/ ̄\
| | <お前は マルチポスト です
\_/
_| |_
ttp://hibari.2ch.net/test/read.cgi/tech/1280950209/66 ttp://hibari.2ch.net/test/read.cgi/tech/1280914463/45 せっかく応えた俺の誠意を踏みにじりやがって。
なんか言えよお前。
さすがに、aes/rsaのライブラリは無いよね...
ubuntuでQt使う時ってWindowsのlibファイルってリンクできる?
71 :
デフォルトの名無しさん :2010/08/15(日) 18:23:27
XMLの書き換えはどのようにすればよいのでしょうか。 <root><test>TEST</test></root> 上記のようなXMLを下記のコードで書き換えようとしたのですが QDomElement root = domDocument.documentElement(); QDomElement newTitleElement = domDocument.createElement("test"); QDomText newTitleText = domDocument.createTextNode("TEST!"); newTitleElement.appendChild(newTitleText); root.appendChild(newTitleElement); QTextStream out(file); domDocument.save(out, 4); 結果は下記のようになってしまいました。(改行やインデントは削除しています) <root><test>TEST</test><test>TEST!</test></root> XQuery Update Facilityなら簡単に書き換えられるようですが、Qtではまだ使えないようですし・・・ よろしくお願い致します。
replaceChild で置き換えれば。
XMLの書き換えにjQueryは使えないのか? createElementやらappendChildやら 長ったらしくて見たくない。
QtってVS2010に対応してますか?
76 :
71 :2010/08/15(日) 22:28:23
すみません
>結果は下記のようになってしまいました。(改行やインデントは削除しています)
><root><test>TEST</test><test>TEST!</test></root>
ではなく<root><test>TEST</test></root><root><test>TEST</test><test>TEST!</test></root>です。
>>72 すみません、書き間違いがありました。
>>73 Qtでやることばかり考えていて完全に盲点でした。
>>75 すみません。
どいういたしまして
>>76 >ではなく<root><test>TEST</test></root><root><test>TEST</test><test>TEST!</test></root>です。
それはファイルの扱いがおかしい。outに追記しているだけ。
>>71 のコードからは71に書いてある結果が得られる。
rootからfirstChildElementでtestを取得して、replaceChildで置き換えたらうまく行った。
ありがとうございました
どいういたしまして
おっと、どういたしましてを言うのは俺だ
82 :
71 :2010/08/18(水) 01:07:00
>>78 ファイルの扱いがおかしいというのはどういう事なのでしょうか。
replaceChildに変更しただけだと特に結果は変わりませんでした。
file->open(QIODevice::ReadWrite)で開いて、最後にdomDocument.save(out, 4)で上書きになって欲しいのですがこれだと追記になってしまいます。
読み込みに使ったXML以外のファイルを保存先に変更したら上手く?いったのですが、読み込みに使ったファイルを上書きしようとしても追記になってしまいます。
現在のコードです。行数制限のため改行やif文を外してあります(動作は確認済みです)
QDomDocument domDocument;
QFile *file = new QFile("/home/hoge/test.xml");
file->open(QIODevice::ReadWrite);
domDocument.setContent(file, true);
QDomElement root = domDocument.documentElement();
QDomElement newTitleElement = domDocument.createElement("test");
QDomText newTitleText = domDocument.createTextNode("TEST!");
newTitleElement.appendChild(newTitleText);
root.appendChild(newTitleElement);
QDomElement newChild = root.firstChildElement("test");
domDocument.replaceChild(newChild, domDocument);
QTextStream out(file);
domDocument.save(out, 4);
file->close();
qtで高精度タイマを使う方法はないのでしょうか?
ファイルをREADで開く XMLからDOM生成 ファイルを閉じる DOM弄る ファイルをWRITEで開く DOM書き出し ファイルを閉じる
>>82 なんで root に appendChild した後に domDocument に replaceChild してるんだ。
そのコードだと replaceChild 失敗してるだろ。返り値チェックしてみろ。
API のドキュメントよく読め。
Qt関係なくね?
>>83 高精度タイマってどういうの?
RTOS とか使わなくても平気なもの?
>>87 1msを正確に測れるレベルのタイマが欲しいです
QTimer じゃ多分ダメなんだよね? ただ通常のマルチタスクの状況でタイマで 1ms って正確に測れるの?
>>89 QTimerだと若干ムラがでるのでて
15msくらいばらつきがあるみたいです。
用途としては音のループ再生をするのに精確な時間でループさせたいのです。
OSは限定?
>>91 一応Windowsでのみ使用する予定です。
んじゃggr
timeGetTimeという関数もあります。 1/1000秒単位で取得できます。(実際にはもっと精度低いですが^^;) 基本的には、GetTickCount()と同じですが timeGetTimeの方が精度がいいという話を聞いたことがあります。 使用するにはmmsystem.hをインクルードし、winmm.libをリンクする必要があります。 timeGetTimeの精度は以下の関数で設定できます。 timeBeginPeriod timeEndPeriod 投稿日時 - 2002-06-24 00:36:49
96 :
デフォルトの名無しさん :2010/08/19(木) 16:57:16
age
97 :
71 :2010/08/21(土) 01:20:26
>>84 ,85
ご指摘されたところを変更したところ上手く動きました。
ありがとうございました。
qtって.netやjavaみたいだよね
どこら辺が
言語とライブラリがごっちゃになってるばかには付き合うな。
Open Source の ZIP 版を download して configure と nmake したが、 いまさらになって directory を変更したくなったorz Makefile とか見たら今 Qt を置いてる directory の path が含まれていて、位置を変更していいのかわからんorz それに、 nmake には 2 時間くらいかかったと思うから、もう二度とやりたくないし。
102 :
101 :2010/08/27(金) 16:21:25
結局全部削除した。 configure が自動生成する source 自体に directory が書かれてたから、 つまり directory を変更するには最初からやり直さないとならんってことだ。
おめでとうw
104 :
デフォルトの名無しさん :2010/08/27(金) 22:11:19
>>102 ビルド済でも方法はありますよ。そうでなければSDKを配布できない。
connect(this, SIGNAL(), this, SLOT()); どっちもthisって最高にダメなパターンな気がするのは気のせいですか?
サンプルのdiagramsceneを見て思ったのですが arrow.hにQ_OBJECTマクロがなくてもスロットが使えるのは何でですか?
107 :
デフォルトの名無しさん :2010/08/28(土) 11:29:15
>>105 connect(this, SIGNAL(), SLOT());
ひとつ this を減らしてみるとどうですか。
108 :
デフォルトの名無しさん :2010/08/28(土) 11:34:54
QApplicationを継承したクラスを作る事は、何かメリットがありますか?
111 :
109 :2010/08/29(日) 20:45:57
>>110 なるほど、多重起動を禁止するアプリケーションですね
thx
qt creatorでvimキーバインドで操作しているのですが、 qt creatorのショートカットが無効になってしまいます いちいち、vimをoffにするのは面倒なのですが、何か良い方法ありませんか?
バイナリファイルを任意のnバイト目から読み込みたいのですが、 どのようにすればいいのでしょうか?
seek
115 :
113 :2010/08/29(日) 23:22:11
qtでストリームを扱う時は、デフォルトでバッファリングされているんですか
誰か初心者用のQt解説HP作ってくれ
言い出しっぺの法則
個人的には Qt が難しいというより,Creator のノリを理解するのが時間かかった Qt のコードサンプルはたくさんあるし tutorial もあるけど Creator の機能を生かす tutorial があまり無い(レイアウトだけならあるけど) 本家もコードガシガシ書く系の tutorial が多い
youtubeにいっぱいある
まあなんていうか べつにいっぱいなくても ひとつだけいいのがあればいいんだけどな
QIODevice::read( char * data, qint64 maxSize )のドキュメントを読んだんだけど エラーの時はreturn -1、エラーじゃない時はreturn 0、読み終わったとき(読みすぎ)の時はreturn -1 ってことで日本語訳間違えてませんか?
qint64 QIODevice::read ( char * data, qint64 maxSize ) Reads at most maxSize bytes from the device into data, and returns the number of bytes read. If an error occurs, such as when attempting to read from a device opened in WriteOnly mode, this function returns -1. 0 is returned when no more data is available for reading. However, reading past the end of the stream is considered an error, so this function returns -1 in those cases (that is, reading on a closed socket or after a process has died). See also readData(), readLine(), and write().
Phononを使ってmp3等をwavファイルにデコードすることってできますか?
日本語訳は読んでないが「エラーじゃない時はreturn 0」ではないな **** ...returns the number of bytes read... **** 読むデータ無いときは 0 になるけど
そもそもどこの日本語訳で、誰に向かって間違ってるって言ってるんだ?
qt creatorでブレイクポイントを設定したんだけど 普通にスルーされる why?
「デバッグ」じゃなくて「実行」してるとかいうオチじゃないよな? あとはコードに落ちない行にブレークポイント設定してるとか,リリースビルドしてるとか。 どの行に設定しても止まらないの?
132 :
130 :2010/09/05(日) 16:30:39
>>131 >「デバッグ」じゃなくて「実行」してるとかいうオチじゃないよな?
ちゃんとデバッグボタンを押しているので、デバッグの画面に自動で画面遷移されます
>あとはコードに落ちない行にブレークポイント設定してるとか,リリースビルドしてるとか。
他の言語/IDEで開発しているので、そこら辺のヘマはしません
何でだろ?
>>130 そのブレイクポイントを通らないんじゃまいか
134 :
130 :2010/09/05(日) 17:26:15
>>133 #include <iostream>
int main(){
std::cout<< "hellow world" << std::endl; ←ここにブレイクポイント
return 0;
}
こんな感じで、超簡単なコードでテストしているんだけど
macではちゃんと動いたんだけど、linux(gentoo)ではちゃんと動かないんだよね
135 :
130 :2010/09/05(日) 18:26:55
もしかして、gccのオプションが変だから ブレイクポイントで止まらないのかも $gdb main.o Reading symbols from /home/user/test/main.o...(no debugging symbols found)...done. まだ、そこら辺を調べて無いけど
136 :
130 :2010/09/05(日) 22:42:03
やっぱり、吐き出されているバイナリに デバッグ用のコードが入っていませんね どうすれば、このデバッグ用のコードを入れられるようになるんでしょうか?
デバッグ用なのにシンボルが付いてないってのが怪しいんだけど… コンパイルのオプションに -g は付いてる?
qtwebkitで読みこんでいる途中の画像を表示するにはどうしたらいいのでしょうか?
>>138 投稿者: 鈴木 佑 投稿日: 2010年8月19日
Trolltech→NOKIAの人だね
IDEの設定はあちこちに散らばると どこでどういう設定したのかわからなくなるw
144 :
130 :2010/09/06(月) 21:30:05
>>137 >コンパイルのオプションに -g は付いてる?
えぇ〜と、どこで設定するのかわからないんですが
g++ならばオプションつけるだけですけど、GUIなんで
.proファイルに CONFIG += debug ってつけとけばできるんじゃね? qt createrつかわないからわからんけど gdbつかうのに上の記述で-gつけたよ
146 :
130 :2010/09/07(火) 22:20:29
>>145 $qmake -project
$echo "CONFIG += debug" >> test.pro
$qmake
$make
$gdb test
でやってみましたが、やっぱりダメぽです
$g++ -g main.cpp
$gdb a.out
で作られたファイルはちゃんとデバッグ用なのに
何でだろ?
ちなみに、$qmake -vは
>QMake version 2.01a
>Using Qt version 4.7.0 in /usr/lib64/qt4
判らないなら黙っててください
-debug パッケージいれた?
152 :
130 :2010/09/09(木) 21:06:59
>>148 gentoo linuxというのを使っているので...
パッケージ管理システムが適当にやってくれています
ただし、useフラグという考え方があって、configureのオプションみたいな動きをします
153 :
130 :2010/09/09(木) 22:09:31
何とか、qt-creatorでもブレイクポイントを設定することが出きるようになりました お前らのおかげです thx
記念おめこ
Qt使ってたら何も継承してない自作クラスも勝手にメモリ解放してくれるんでしょうか? そんなわけないですよね?
Q_OBJECT だっけ これを書いてあるクラスは解放してくれるよ
QObject 継承してなかったら無理だろ
qtのapiは読めば何とかわかるけど、kdeになるとorzって状況になってしまう あぁ〜、誰かkdeの開発ドキュメント作ってくれないかな〜 今あるのは古すぎる
QWidgetのキー入力のシグナル無いの? なんかキー操作したらシグナル出したいのだが、アクションゲームとかどうすればいいんだ
SDL使え
eventを使え、ルーク
pysideがwinに対応したのにお前等全く取り上げてないのなw ところで、pythonのお勉強ガムバッテる最中なんだけど、 皆さんはQtのお勉強はどうしましたか? やっぱりオーライリーが鉄板ですか?
>>163 >pysideがwinに対応したのにお前等全く取り上げてないのなw
人のせいにするなや屑
おまえが"真っ先に"取り上げてるからそれでいいだろがカス
pyside見てきた。 Pythonは使っているが、もっぱらQtと組み合わせて使うことはせず 単に超便利なスクリプト扱い。
Win7x64で2010.04版使ってるんだが、examplesのapplication.exeとか起動すると、 "しばしば"窓が出るまで10秒くらい待たされる。再現性が全くない。 必要なdllをコピーしても、qt/binにpath通しても同じ。こんな症状の人、いる?
2008R2の64bitで同じ症状
10秒くらい待てば?
WOW64 が"しばしば"仕事さぼるんじゃね?
>>167 うちだけじゃなかったのね。ひとまず安心♪
nokiaが推奨している、コンパイラやosのバージョンの一覧表があったと思うんですけど 知っている人教えてください
linuxでの開発はubuntuがいいのかな
>>172 ソフトは作ったことがありませんが、qt/C++の勉強はgentooマシンでやっています
地味に問題が発生しましたが、自分だけの力で解決できました
Eclipse Integration入れてみたんですが…、 context help(カーソル位置のキーワードのヘルプを出す)って どうやって設定するんでしょう??
175 :
デフォルトの名無しさん :2010/09/15(水) 11:58:10
AndroidアプリをQtで作ったら、 バイナリ互換が無いから、 Androidマーケット(?)での販売は無理ですか?
poppler-qt4の話はここでおk? 既存のPDFにannotationを追加して別名で保存するサンプルが欲しいんだけど。
Qtでクラスの中身をファイルに出力する方法ってありませんか?
qt creatorってcmakeも使えるんだね 知らんかった
qmake が cmake を元に作られてるからね
qt-everywhere-opensource-src-4.6.3.tar.gz を OSX 10.6.4 でビルドしようとしているのですが、 configure の途中で qmake が Segmentation fault やら Bus Error を出してます。 また、configure が終わった後に make しようとしても make: *** No rule to make target `make_default', needed by `first'. Stop. と出てしまいます。 同様の現象に遭遇した方はおられますか? OSX 10.5 では普通に configure, make できていたのに…。orz
MacだしOSXにバグがあるんじゃね?
C++0xの機能作ってコード書いてたらqt creatorの補完がぶっ壊れまくって笑った SLOTにラムダ式とかやりたいんだけどなぁ…orz
editor だけ違うのにすりゃええが
Q_DECLARE_PRIVATE についての公式のドキュメントが見つからないのですが、どこに書いてあるのでしょうか。
186 :
デフォルトの名無しさん :2010/09/18(土) 22:49:03
c++でスロットを作りたいのだが なんていうデザインパターンなんだ?
>>163 ライセンス以外に、PyQtに比べてどんなアドバンテージがあるの?
>>186 スロットは、Qt特有のもの。
デザインパターンは言語に関係しない設計の概念。
だから質問自体が意味不明。
Chain of Responsibility パターン
signals/slotsはobserverじゃね?
191 :
デフォルトの名無しさん :2010/09/19(日) 01:54:42
>>184 ドキュメントには書かれていないけれど、ソースコードを読んでも難しくないので分かりますよ。
192 :
デフォルトの名無しさん :2010/09/19(日) 01:59:25
>>186 > c++でスロットを作りたいのだが
> なんていうデザインパターンなんだ?
逆。
スロットを作るためにデザインパターンを適用するんじゃなくて、
デザインパターンを適用して作った仕組みがスロット
最近、signalとslotsって本当に便利なのかな〜って気がしてきた type safe以外に何かいいことがあるのかな〜etc etc
emit
GUIのイベントハンドリング部分を 人間にとってシンプルにかけるようにしたいなら、 C++の言語仕様の範囲内ではまず不可能。 GUIのイベントハンドリング部分をシンプルにするための 方法としてQtが採用したのが、signalとslots。 シンプルにかける。というメリットがある。
OS毎の違いを吸収するためだと思ってた
>>194 boostにもsignal-slotが取り入れられたのか
間違った名前のslots(ex. SLOT(clucked()))とかやったとき QTが実行時に警告になるだけってのに対してboost::signalsはコンパイル時エラーになるのがいいなと思った javascriptやrubyみたいに動的にクラスやインスタンスにsignals/slotsを追加できるなら実行時エラーでもいいんだけど 折角C++なんだから静的にできるところは静的にやりたいじゃない あと最近になって入ったsignals2はQtのsignals/slotsと同じくスレッドセーフ 昔からあるsignalsの方はスレッドセーフじゃないからGUI用の機構としては駄目ぽ boostのsignalsはc++0xのラムダ式でも使えて、ラムダ式の変数キャプチャと組み合わせればすんげー強力になるから Qtが本格的にC++0xのラムダ式に対応する頃になれば、QtのSignalもboost方式になると思うけどいつの事になるやら…
なら読まなければ良い
間違った名前のslots(ex. SLOT(clucked()))とかやったとき、 QTが実行時に警告になるだけってのに対して、 boost::signalsはコンパイル時エラーになるのがいいなと思った。 javascriptやrubyみたいに、動的にクラスやインスタンスにsignals/slotsを追加できるなら、 実行時エラーでもいいんだけど、折角C++なんだから静的にできるところは静的にやりたいじゃない。 あと最近になって入ったsignals2は、Qtのsignals/slotsと同じくスレッドセーフ。 昔からあるsignalsの方はスレッドセーフじゃないからGUI用の機構としては駄目ぽ。 boostのsignalsはc++0xのラムダ式でも使えて、 ラムダ式の変数キャプチャと組み合わせればすんげー強力になるから、 Qtが本格的にC++0xのラムダ式に対応する頃になれば、 QtのSignalもboost方式になると思うけどいつの事になるやら…
俺の熱いC++0xとQtに対する想いは140文字や3行なんかでは収められない 2kバイトでも少ないぐらいだ
signal/slotとeventは何が違うですか?
signal/slotsの方が柔軟な扱いができる signal/slotsはeventを扱い易くする為の機構
boostにスロットあるのか、さすがboost様や Qtなんていらんかった
QtでGUIアプリ作る上でQtのsignal/slotsを使わずにboostのやつでやる方法があるなら俺が教えて欲しいぐらい
211 :
デフォルトの名無しさん :2010/09/19(日) 15:19:39
>>205 >動的にクラスやインスタンスにsignals/slotsを追加できるなら、
ここは、文脈からすると、するならの書き間違い?
一応書いとくと、動的にできるよ。デザイナーの.ui ファイルから読み込むのは、まさにその機能だし。
QActionってメニューバーの1つ1つの項目ってことでOKですか? 終了、ファイルを開く、保存みたいな感じ
213 :
デフォルトの名無しさん :2010/09/19(日) 18:36:51
>>212 メニューバーについてはそうです。
ツールバーやコンテキストメニューに同じインスタンスを設定すると、
選択されたときに呼出されるスロット、有効/無効などの同期が取れるのがよいです。
214 :
212 :2010/09/19(日) 20:49:33
Qt 4.7 以降はUIの記述はQMLに移行していくの?
216 :
デフォルトの名無しさん :2010/09/20(月) 09:53:55
>>215 QMLという選択肢が増えるのでしょう。QMLはモーバイル向けのようなUI/UXが作り易くなる。
しかし、例えばCADなどには向かない用途がある。QMLでできないことも多くあって、モーバ
イルであってもQt/C++で実装して、QMLで使うことになる。
218 :
デフォルトの名無しさん :2010/09/21(火) 22:36:32
twitter脆弱性祭りの最中、Qt4.7リリースage
質問があります。もしスレ違いでしたら申し訳ありません #include "ALogPluginUtil.h" class ALOGPLUGINEXPORT GKProperty { public: GKProperty(); GKProperty( const QTime& initial); ~GKProperty(); GKProperty & operator= ( const GKProperty& prop ); void setTime( const QTime& time ); const QTime& getTime() const; private: QTime Time; }; #endif とある時に、getTime()をint Timeに代入するにはどうしたらよいのでしょうか? よろしくお願いします
マルチ死ねカス
>>220 申し訳ありません
Qtも使っているのでこのスレの方ならわかるかもと思ってしまいました
どうしてもわからなかったもので
不快にさせてすいませんでした
WebKit上で日本語入力して漢字変換すると落ちるバグもなくなったんだな これでやっと作り始められるぜ
>>223 おおっ、まじっすか。
そいつあ ありがたい。
Qtについてくるサンプルコードって、前までLGPLだったみたいだけど 4.7の奴は全部BSDになってるっぽいな
なんだ、サンプルか
QTimerのsinglShot的な感じで一度だけconnectする方法ってないですかね。
ありますよ
もしよかったらご教授願います><;
>>225 Qt自体がBSDになることはないのかなー。
いやや、サンプルが(修正?)BSDになっただけでもすごく助かる これで安心してサンプルのソースを流用できる。
232 :
デフォルトの名無しさん :2010/09/23(木) 09:51:25
>>227 connectの重複を避けるというならばQt::UniqueConnection。
233 :
デフォルトの名無しさん :2010/09/23(木) 12:52:28
>>230 Symbianだけしかサポートしなくなったりしたら、KDEとの取決めでBSDライセンスになる。
そうなったらQt自体が用無しだわ
qt creator 2でプロジェクトを作ると、ビルド専用のディレクトリができてウザい 1.3の時みたいな設定にするには、どうすればいいんですか?
>>235 左の「プロジェクト」のボタンを押して,「シャドウビルド」のチェックを外せばいいんだけど,
新しくプロジェクトを作ったり,Qt Creator 1.3のプロジェクトから移行したりするとデフォルト
でこのチェックがONになってるので,いちいち外すのがめんどい。
デフォルトでシャドウビルドをOFFにする方法,誰か知りませんか?
プロジェクトのビルド設定からシャドウビルドのチェックを外せ
238 :
235 :2010/09/23(木) 22:01:32
239 :
津田 :2010/09/24(金) 06:50:21
241 :
デフォルトの名無しさん :2010/09/24(金) 18:45:11
>>241 いや普通にBSD化されたらうれしいだろう。
nokiaのQt開発部をどうやって養うのかわからないけど。
243 :
デフォルトの名無しさん :2010/09/24(金) 19:15:38
>>242 LGPLの方が改良点を共有できるからBSDよりうれしい。
NokiaのQt開発部門は、既にSymbianとMaemo/Meegoのためにこき使われている。
Bug TrackerとLabsを見比べると、中核な開発者が辞めている。
最近の追加される機能は、SymbianとMaemo/MeeGoのプラットフォームで動かす
というのがぞろぞろで、Nokiaの本性が丸出しになっている。
>>243 LGPLにしたのはすごいと思う。
> というのがぞろぞろで、Nokiaの本性が丸出しになっている。
なんで企業が金儲けすることを嫌うの?
その結果Qtが使い捨てみたいになるからだろ
プログラマと学者は共産主義者の集まりだからな
247 :
デフォルトの名無しさん :2010/09/24(金) 20:50:52
>>244 企業はでたらめな儲け方はしてはならないが分かりませんか。金に任せて買収しただけでしょう。
買収されてから、SymbianやMaemoやMeeGoのためばかりにやってるのがあからさまで嫌になる。
Open Sourceのためだとか、Open Govermentなんてうそっぱちでしょう。
qtcreatorに比べてkdevelopの過疎なこと…
>>247 > Open Sourceのため
って言ってるんだっけ?
最初っから広く宣伝のためにGPLやLGPLで
ライセンスしたって聞いてたけど、
俺は新参だからあんまり歴史的なことはしらない。
というか別にQtだってソフトウェアなんだから(コードだけど。)
金儲けに使うなんて正当なQtの存在意義だと思うけど。
250 :
デフォルトの名無しさん :2010/09/24(金) 21:30:11
>>249 GPLは元々ある。LGPLは、GoogleやAdobeに対抗するための方便。
NokiaがNokiaのためだけに使っているというのを言わないのがとても汚い。
Nokiaの製品のために役に立つようでない他のプラットフォームが手抜きになっているのが
明らかなのにそれをはぐらかし続けている。
>>250 > 他のプラットフォームが手抜きになっているのが明らかなのにそれをはぐらかし続けている。
あー、なるほどね。そういうことね。
> LGPLは、GoogleやAdobeに対抗するための方便。
GooglegはともかくAdobeはクソライセンスでがちがちに固める
卑怯な策に出ている様に思えるけど、LGPLにするとなんで対抗できるの?
上のと合わせて、"NokiaはLGPLの考え方を応援しています"と主張できるから
印象が良くなって対抗できるってこと?
そもそもQtがLGPLじゃなくてBSDLを選択した場合にエンドユーザーとして 何かメリットあるかね?
>>252 ソース開示が義務じゃないから企業が使いやすい
企業なら金払ってライセンス買えばいいじゃない
コミットされやすいという点でLGPLの方が良いかもね
そんなにダイナミックリンクが嫌なのかよ 別にいいじゃねえか数十MBのDLLくらい
static link することの快感がねww
>>248 kdevelop は、3.5 と 4.0 の山を超えられなかったアプリのひとつだからな。
機能やテンプレートがごっそりなくなって別物になってるし。
普通、他のアプリをさしおいてでも、開発環境は優先して移植するべきなのに、ここまでほったらかしとは、
コアな開発者に取っては、kdevelop は必要な開発環境じゃないのだろう。
実際問題QtCreatorで十分だしな KDEコンポーネントも使えるし
261 :
デフォルトの名無しさん :2010/09/25(土) 10:10:25
KDevelopはよく落ちたなあ。それで使う気がなくなった。
いまだviが主要開発ツールになってるOSじゃ 統合開発環境はあんまり需要ないんだろう
263 :
デフォルトの名無しさん :2010/09/25(土) 11:35:58
QtCreatorって名前からして便利そうだな 使ったこと無いけど、今度使ってみよう。
>>263 なんでそう思うの?確かに MeeGOやSymbianはプッシュしてるけど
他のプラットフォームはむしろ成熟してるという感じだと思うが
たとえば実際の中身を見ると keynote いきなり Dreamworks とか
In Use のセッションも Maya, AutoDesk, Dreamworks, Weather riskとか
MeeGOと Symbian だけとはとても俺には思えないが。
まさか Dreamworks とか MeeGO や Symbian で3Dアニメーション
作ってると思って無いよね?
>>264 よくできてて便利だけど慣れが必要かも知れない
この手のものは何でもそうかも知れないけど
これどうやってするの?という疑問が結構出てくるかも
企業が自社製品をプッシュするのが死ぬほど嫌なんだろう
268 :
デフォルトの名無しさん :2010/09/25(土) 12:32:35
>>265 >MeeGOやSymbianはプッシュしてるけど
それがいけない。
>他のプラットフォームはむしろ成熟してるという感じだと思うが
BugやSuggesionへの対処が疎かになっている。理由もなしにCloseされるのが多過ぎる。
269 :
112 :2010/09/25(土) 12:58:08
>>268 >
>>265 > >MeeGOやSymbianはプッシュしてるけど
> それがいけない。
商売だし、しょうがないんじゃないか?
これらは今が勝負時って感じだからじゃないかな
他のマーケットは今が過渡期という程じゃないからね
>>262 さすがに「viが主要開発ツールになってるOS」はもう無いんじゃないか?
emacs なら開発にも使ってる人結構いるかも知れんが
vi 使う事あるけど開発には使ってないな
272 :
デフォルトの名無しさん :2010/09/25(土) 19:51:10
>>270 つまらないところに買収されてしまったものだなあ。
vi(vim)をメインに使ってるOS開発者なんて腐るほどいるだろ
qt creatorのviは微妙
デスクトップ系でQtを買収したいところは無いだろうし、 どこに買われてもモバイル系重視は変わらんだろ。 Nokia以外に買われてたならLGPLもあったかどうか分からんし。 文句言うくらいなら自分でパッチ書くなりフォークするなりすれば。
ネタにマジレスですか
277 :
デフォルトの名無しさん :2010/09/26(日) 09:07:51
>>275 >LGPLもあったかどうか分からんし
GPLの方がコードが公開されるからよい。
QStringを使わないでQLatin1Stringを使うのは何故?
279 :
デフォルトの名無しさん :2010/09/26(日) 13:17:27
>>278 1バイトだけ考えればよいので軽くなるから。
docのフォント指定がイヤーな感じになってる件について はぁ自分で手直しするしかないか
281 :
278 :2010/09/26(日) 14:58:10
QMainWindow::closeEvent( QCloseEvent * event )について何ですが、 これってオーバーライドするだけでOKですか? qtはsignalとslotだけだと思っていましたが、javaのswingみたいな所もあるんですね〜
qtcreatorのデバッガで呼び出し履歴みたいな機能ないんですか?
>>282 何をしたいかにもよるが、オーバーライドしたら
QMainWindow::closeEvent() を呼び出しておくのが無難。
>qtはsignalとslotだけだと思っていましたが、javaのswingみたいな所もあるんですね〜 kwsk
phononのVolumeFaderEffectクラスとかってまだ使えないんですか? なんかパスにインサートしようとするとうまくいかないんですが。
C++ができないんでPythonとQtを勉強しようとおもうのですが、書籍はないのでしょうか? お勧めサイトなどもあれば教えていただきたいです。
たぶんPyQtを使いたいんじゃないの
>>287 QtからC++に入るのも悪くないかもよ
C++の面倒な部分を避けてプログラムできるから
292 :
282 :2010/09/26(日) 18:54:42
そういや、いつからかQt CreatorにPythonがくっついてくるようになったけど これって何に使ってるのかな
294 :
デフォルトの名無しさん :2010/09/26(日) 22:36:11
>>291 Qtにほぼ全てを頼り切ろう・・・としても無理なんだし
C++の壮大な落とし穴的仕様を前に逃げ出すやつは、
結局Qtから入ったっていつまでもまともなC++プログラミングなんて出来ないだろう。
入り口はどこか必要だから入りやすいところから始めれば良いと俺は思うけどね いろいろコード書いているうちに落とし穴とかも勉強していけば良いし 初めからすべてを知ろうとか難しい事からしようと思ったら挫折するのが普通
いいこというね
スタイルシートの変更の為にコンパイル済みヘルプ(.qch)をビルドし直したいんだけど qhelpgeneratorに.qhpに喰わせる.qhpが見つからない doc/doc.pri には doc-build/html-qt/qt.qhp とかファイルの記述があるけど そんなファイルは見当たらないし、どうしたら良いんだコレ .qchはSQLite3らしいからベタに読み書きした方が早いのか
Qtっていつなくなるのか不安です。
男だろ 元気出せ
>>299 とりあえずLGPLだからそれだけはいつまでも残るんじゃないかな。
むしろC++がなくなるんじゃないかな。
C++無くなったらQtはどうやってコンパイルしたらいいの?
だいじょうぶ、C++ は永遠に不滅です。
304 :
デフォルトの名無しさん :2010/09/27(月) 19:51:49
>>301 JavaがなくなってもC++はなくならないな。
Google推奨開発言語がJavaとC++とPythonだからこれらは不死身だよ
>>305 C++とPythonを愛する俺にとっては
すごく良い会社に見える
java嫌いだけど
Rubyはなくなりそうです?
宝石の価値を分からないやつがレールの上に置いていたずらしようとしたけどどっかに持って行かれてた。 rubyはもうない。
青色LEDの原料のGaNはRuby基板の上にアモルファス成形してるんだってね
Ruby はなくならんだろ ただ廃れることはあるかも知れんな 個人的には手軽だから流行って欲しいがRoR以来決定打が無いかな
311 :
デフォルトの名無しさん :2010/09/28(火) 02:04:13
Rubyの上で動くScalaみたいなのってないの? っつーかスレ違いだな スマソ
質問 qtcreator って、gdb のコンソール画面、ないの?
デモの「Rich Text→Text Object」にて、自作のオブジェクトをQTextEditに挿入するサンプルがありますが このオブジェクトが挿入されている状態のQTextEditのデータをファイルに保存して それをロードしたときにオブジェクトが挿入された状態を復元するには どういう手段をとればいいんでしょうか? ファイルの保存形式については特に問いません
savelayout
315 :
デフォルトの名無しさん :2010/09/28(火) 21:38:11
Q_PROPERTYを使うと何が美味しいんですか?
qDebug で改行しない方法ってありますか?
318 :
デフォルトの名無しさん :2010/09/28(火) 23:51:33
>>316 メタ情報でプロパティにアクセスできる。
>>315 レスthx
やっぱし無いか。
ちょっこし残念。
今後に期待。
320 :
デフォルトの名無しさん :2010/09/29(水) 00:39:36
>>317 QDebug nDebug()
{
static QDebug* debug = 0;
if ( debug == 0 ) {
QFile* file = new QFile;
file->open( stderr, QIODevice::WriteOnly );
debug = new QDebug( file );
}
return *debug;
}
nDebug() << "foo";
nDebug() << "bar";
nDebug() << "baz";
nDebug() << flush;
>>320 317ではないけど、これってスレッドセーフ?
322 :
デフォルトの名無しさん :2010/09/29(水) 01:38:46
シングルトン臭い
325 :
デフォルトの名無しさん :2010/09/29(水) 06:42:18
>>323 デストラクターが呼ばれると改行されるので、呼ばれないようにすれば改行しなくなります。
つまりどういうことです?
327 :
デフォルトの名無しさん :2010/09/29(水) 13:51:53
新規プロジェクトメニューで出てくる >モバイル_Qt_アプリケーション ってすごいの? Qtって元々クロスプラットフォームじゃないの?
328 :
327 :2010/09/29(水) 14:05:48
まさか、 >QtMobility を使う限り、 Javaみたくリコンパイルも不要、なんてことは無いですよね?
Vista64にmingw含むSDK版をインストールしました。 QtCreatorでGUIアプリを作って実行後、終了させるためにwindowsのcloseボタンを 押すと不正終了云々いわれてしまいます。Creatorを使わずに作ったアプリは正常終了します。 Creatorがおかしいのでしょうか。それとも私の環境が 悪いのでしょうか。
slotのconnect先がおかしいんじゃないでしょうか
QtCreatorでQuitボタンだけのアプリを作ったら、 ちゃんと正常終了できました。 うーん、厳密になったということなのか。 デストラクタをちゃんと書かないとダメ出しされる ようになったんですね(;_;)
332 :
デフォルトの名無しさん :2010/09/29(水) 18:22:27
Qt Creatorでqint64とかのキーワードも色が変わるようにしたいんですが、 そういう機能には対応していますか?
335 :
デフォルトの名無しさん :2010/09/29(水) 21:37:53
337 :
デフォルトの名無しさん :2010/09/30(木) 11:32:35
>>327 プロジェクト作ってみてもQt GUIアプリケーションと同じだった。
>>328 モバイル向けのいろいろな機能のラッパーみたい。だからラップ
が実装されているプラットフォームでのみ使えるだけで、どの
プラットフォームでも使える訳じゃない。
AndroidとiOSが公式対応してくれれば神環境なんだけどなぁ Nokiaじゃやらないだろうけど
339 :
デフォルトの名無しさん :2010/09/30(木) 12:16:21
そうだね。残念です。
341 :
デフォルトの名無しさん :2010/09/30(木) 21:49:07
>>337 Mobility 1.1.0 Betaってのが出たけれど、MeeGoとSymbianのことしか考えていない。
わざわざ競合してるハードメーカーのためになることをしようとは思わんだろう まぁ多少弁護するなら Apple がオープンだという感じは全然しないな
メニューバーやツールボックスを自動で復元させたいのですが、 どのようにすればいいのですか?
345 :
デフォルトの名無しさん :2010/09/30(木) 22:29:50
>>342 Nokiaなんかに買収されなければよかったということだ。
>>345 買収されていなければ今頃潰れてたかもよ…
348 :
デフォルトの名無しさん :2010/09/30(木) 22:49:57
>>347 Nokiaの奴隷になるより、その方がよいじゃないか。
文句あるなら自分が直せよ オープンソースなんだし まぁ口だけの奴がやるわけないな
351 :
デフォルトの名無しさん :2010/09/30(木) 23:05:06
>>349 直す直さないの問題じゃないのすら分からないのか。
353 :
デフォルトの名無しさん :2010/09/30(木) 23:16:48
354 :
デフォルトの名無しさん :2010/09/30(木) 23:17:33
>>351 > 直す直さないの問題じゃない
なんで?
Qtはもともとお前の物じゃないし。 お前は一行もまともに協力していないのに、 あたかも自分の物であるかの様に錯覚して、 > 直す直さないの問題じゃない とか言っちゃうお前の脳内の構造がよく理解できない。 他人様の持ち物を借りているだけなのに、 それにけちを付けるのはどういう了見で?
似非オープンソースって何だよwww
>>354 | こいつ最高にアホ | 同意
\ \
 ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄
∩_
〈〈〈〈 ヽ /  ̄ ̄ ̄ ̄ \
〈⊃ } /、 ヽ
/ ____ヽ|__| |ヘ |―-、 |
| | /, −、, -、l ! ! q -´ 二 ヽ |
| _| -| ・|< || | / ノ_/ー | |
(6 _ー っ-´、} / \ | /
\ ヽ_  ̄ ̄ノノ/ O=====|
/ __ ヽノ / / |
(_|__) / / / |
Qt4.7の目玉が携帯端末への対応だからMeeGoやsymbianが注目されるのは ある意味当然。 ただその恩恵は他のEmbedded LinuxやWindows CEにもある訳だし、 クロスプラットフォームが売りのQtで、その適用範囲が広がることは 従来からのユーザーにも十分メリットがあると思うんだが。
基本的にQtが繁栄すれば根っこは同じだから自然と全体も良くなるだろうし マーケットを狭めて廃れれば忘れられていくだけ
>>361 Qt なら QMainwindow::saveState(), QMainWindow::restoreState() を使う。
Android上でQtアプリのボタンとかテキストエリアとかがあるアプリのサンプルありませんか? これからAndroidとNDK勉強をはじめようと思ってるんですが 出来上がりのイメージをつかめればと
Pyside、PyQtって、PythonのコードにQtを使えるのか QtのコードにPython使えるのか、どっちですか?
Qtのコードにと言うか、QtCreatorでPythonを使う?自分でもよく分かりませんが
>>364 自分でも質問が分からないのに俺らに質問されてもな。
エスパーの居る所に行け。
って言われることくらい分からないの?
なんとなく分かったわ じゃあの
369 :
343 :2010/10/01(金) 22:54:14
>>361 KXmlGuiWindowを見たから質問したんだよ
Qtには無いのかな?ってね
konsoleを読んでいる途中なんだけど、kdeアプリってどうやってデバッグするのかわからない
cmakeの情報が少なすぎるんだよ
370 :
デフォルトの名無しさん :2010/10/01(金) 23:01:08
age
372 :
361 :2010/10/02(土) 15:11:17
>>369 状況がよく飲み込めないけど、自分の開発しているアプリはQtなんだよね。
そしてデバッグしているKDEアプリは、ダウンロードしたパッケージ(konsole)で、それがコンパイルできないってこと?
cmake の情報が少ないというのは、cmake のエラーがよくわからないってこと?
cmake --debug-output
cmake --trace
で少しは、デバッグできるようになるとなるかも。
確かにKDEは、自前のモジュールファイルを使っているから、cmake標準のマクロなのか、
KDEのマクロなのか分からず、追いかけるのに苦労するけどね。それでもマクロは、
ディスク上にある*.cmake ファイルか、cmake のヘルプを検索すればでてくるので、
それを見ていけばだいたい分かるはず。といってもそれが面倒くさいんだけどね。
373 :
343 :2010/10/02(土) 15:50:59
qtでプログラミングするにはkdeのソフトでも読めば勉強になるかなと思ったので、 とりあえず簡単そうなkonsoleを読むことにした どいう風に流れているか勉強したいので、デバッグモードで動かしたいと考えますた でも、cmakeに怒られちゃうんだよね、わかんないからkdevelop使うしかないのかな? ~/kdebase-4.4.5/apps/konsole$ --debug-output Running with debug output on. CMake Error at CMakeLists.txt:2 (KDE4_NO_ENABLE_FINAL): Unknown CMake command "KDE4_NO_ENABLE_FINAL". Called from: [1] /home/yamada/kdebase-4.4.5/apps/konsole/CMakeLists.txt CMake Warning (dev) in CMakeLists.txt: No cmake_minimum_required command is present. A line of code such as cmake_minimum_required(VERSION 2.8) should be added at the top of the file. The version specified may be lower if you wish to support older CMake versions for this project. For more information run "cmake --help-policy CMP0000". This warning is for project developers. Use -Wno-dev to suppress it. Called from: [1] /home/yamada/kdebase-4.4.5/apps/konsole/CMakeLists.txt -- Configuring incomplete, errors occurred!
374 :
343 :2010/10/02(土) 15:52:17
Qtのデモビューアって、見た目派手なのはいいんだけど、デモを見て回るのかなり面倒くさいよな もうちょっとなんとかならないんだろうか
376 :
デフォルトの名無しさん :2010/10/02(土) 21:01:42
>>375 オープンソースなのだから、自分でよいものを作って出せばよい。
377 :
361 :2010/10/02(土) 21:31:13
>>373 そのエラーは、ひとつかそれ以上上のディレクトリのCMakeLists.txt に依存しているときの典型的なエラーだ。
少なくとも cmake_minimum_required(VERSION 2.8) これが書かれている CMakeLists.txt のディレクトリごと
持ってきて cmake しないといけない。 たしか、kdebase は、kdebase ディレクトリ全部まとめてパッケージするように
なってたと思った。
他のディレクトリをコンパイルしないようにするには、add_subdirectoryとかをコメントアウトしたら多分いける。
あとLinux 使っているなら、debug パッケージ入れると幸せになれるかも。
それから、KDEのソース追うのは、APIドキュメントからそのままソースに突入するのが、お勧め。
378 :
343 :2010/10/02(土) 21:38:09
とりあえずパスとかの設定はちゃんとしてるのか? それともそういうの分かんない初心者が.hと.cppだけ入れてみましたって話なのかどっちだい?
>>379 インストールの仕方から使い方まで全部付属のINSTALL.TXTに書いてあったぞ。
ちゃんと読んだか?
初心者ってなんでドキュメント読まないんだろうな
ドキュメント読めるようになるまでが初心者なんじゃね?
普通読まないだろ
>>384 最初は読まなくても、どこか上手くいかなかったらまず読むだろ?
世の中には2種類の人間がいる。ドキュメントを読めば理解できる人間と、読まなくても理解できる人間だ。 因みに私は、読んでも理解出来ない人間だ。
読まなくても読んでも理解出来ないことが書いてあることを理解している訳ですねわかります
388 :
デフォルトの名無しさん :2010/10/05(火) 18:57:03
調べる気も能力もないだけだろ。
UbuntuにインストールしたQtで、Windows用のアプリをクロスコンパイルできますか? スタティックリンクでもダイナミックリンクでもWindowsで動けばどっちでもいいです。
>>389 *mingw*.deb のクロスコンパイル用のパッケージ群をインストールして、
Qtのソースから、mkspecs/win32-g++/qmake.conf等の修正やら configure
オプション指定やら適宜行ってコンパイルするとクロス環境は作れる。
一時期それで使っていたが、遅くてもWindowsPCが用意できるなら、そちらで
コンパイルかけたほうがいいと思う。
>>390 ありがとう。ちょっとmingwでやってみます。
qapplicationを継承して、クラスを作るメリットってありますか?
多重起動できないアプリを作ったときに、そういう処理を組み込んだ QApplicationの派生クラスを作ったことはあるけど 別にやる理由がないならメリットもないんじゃないの
394 :
392 :2010/10/07(木) 22:04:17
>>393 qt/kdeアプリの多くがqapplicationを継承していたもんで
>多重起動できないアプリを作ったときに、そういう処理を組み込んだ
これって、自分で作ったの?
396 :
392 :2010/10/07(木) 22:19:48
>>395 dbus関係のクラスを使うと、作れるんじゃないかな?
399 :
398 :2010/10/07(木) 22:52:56
ごめ、いきなりかきこんでしもた
>>392 QApplicationはqAppとしてどのクラスからも見れるので、そこに汎用的なものを入れておくのもありだな。
例えばKApplicationには、random()が入ってる。
あんま下手な使い方するとソース汚すだけだが。。。
あと、QApplicationでvirtual関数になってるものはどれも、継承すると特に便利なものだって思っていいと思うよ。
400 :
392 :2010/10/07(木) 23:01:18
>>399 なるほど、ありがとうよ
昔、javaでJFrameを継承すと何が便利なのか?と考えてたけど
それと同じだな
フォームグリッドは左がラベルで、右が入力を前提とした専用レイアウトだから、割合が特殊なんだな。 右クリックで違うレイアウトに変更すれば、そういうことにはならない。
QGridLayout使うか、QVBoxLayoutにQHBoxLayout入れるかだなぁ。
QDockWidget以外で、左右(上下)のWidgetの比率をマウスで変更するにはどうしたらいいの?
405 :
デフォルトの名無しさん :2010/10/09(土) 14:26:30
>>404 QSplitterかイベントハンドリングで。
boost使っていますか? qtからc++を始めたので、全く使っていません
でもQtで置き換えられるのはSTLじゃないかね
408 :
デフォルトの名無しさん :2010/10/09(土) 18:57:11
>>406 使っていますよ、bindがQtConcurrentで使えたりします。
409 :
デフォルトの名無しさん :2010/10/09(土) 19:32:31
410 :
406 :2010/10/09(土) 20:04:56
boost も STL も被るところが無いとは言わんが基本違うでしょ Qt 使ってても vector とか普通に使うし、良い乱数欲しければ boost も 使うし FFT したければ fftw3 も使う
macだとcocoa=objective-cのイメージがあります なぜ、qtはc++でcocoaを使えているんですか?
415 :
412 :2010/10/11(月) 20:28:51
Q_ASSERマクロは何をするんですか? エラーメッセージは出すみたいなんですが、 ソフト自体は落とさないんですか
418 :
デフォルトの名無しさん :2010/10/12(火) 03:05:32
qt creatorの外部エディタにgvimを使っている人いますか?
GJ!!!
423 :
デフォルトの名無しさん :2010/10/14(木) 03:46:15
( ゚∀゚)o彡°Qt!Qt!MacでQtはじめてみますた。 さっそくですが質問です。 QtでOpenGL使うならこれだけは読んどけ!みたいな文献(書籍,Web問わず)がありましたら教えていただけないでしょうか。 日本語か英語だとありがたいです。
VS 2008でコンパイルした自作ライブラリをQt Creatorで使おうとしたら
mainwindow.obj:: error: 未解決の外部シンボル "void __cdecl Msg(unsigned short const *)" (?Msg@@YAXPBG@Z) が関数 "private: void __thiscall MainWindow::on_pushButton_clicked(void)" (?on_pushButton_clicked@MainWindow@@AAEXXZ) で参照されました。
というエラーがでる
ボスケテ!
作ったライブラリはこれ
http://cid-c9ae0c9375e8968b.office.live.com/self.aspx/.Public/01.7z ただMessgaeBoxをラップしただけ
もちろん.proにはINCLUDEPATH、LIBPATH、LIBS +=とかは追加してます
428 :
デフォルトの名無しさん :2010/10/15(金) 01:22:30
>>425 こんな早くレスがつくとは...
>>425 はきっとイケメン。
情報元とGoogle先生にお伺いたてながら色々やってみます、情報ありがとでしたー。
いままで GNU gettext のi18n しかやったことないのですが Qtのi18nの仕組みを使っても、同じような感覚で使えますか? poファイルじゃないんだろうなあ・・・
>>429 基本的にはXLIFFだけど、Qt4.5からGNU gettext po 形式も使えるよ
QtのtsファイルはXMLだけど独自形式。 lconvertコマンドでgettextやxliffから変換できる。
432 :
デフォルトの名無しさん :2010/10/15(金) 16:05:19
>>430 基本はts。XLIFFでは漏れがあって翻訳ツールに渡すには使い方にこつがいる。
QtでGUIアプリ作るのに最低限のC++の勉強できるサイトかなんかを どなたか教えてくださいませませ
最低限、一通りC言語を勉強した方が良いと思う
CからC++は入りにくいと思う クラスの理解が大変だった
それはCの理解が不十分だったからだよ
>>433 どのような経験があるかで全然変わって来る
プログラミング経験があるかどうか、あるならどんな言語か?
プログラミングしたこと無いならサイトで勉強しても「いそがば回れ」みたい
な事態になりかねないよ。最低限この程度読まないと。
これならわかるC++ CD-ROM付 (ブルーバックス) 小林 健一郎
もっと厚い本や詳しい本もあるだろうが、挫折する可能性大かも
「やさしい…」シリーズはやさしいかも知れないが内容があまりにも薄くて
実用にならんので俺は勧めない
QtでC++始めるのもありかも知れんが個人的には混乱しそうに思う
そういうサイトもあるからそういうの見てわかるならそれでも良いかも
むしろQtのサンプルを参考にQtアプリを作りながらC++を理解するで良いと思うんだ
>>439 Qt のサンプルって本家のか?質は悪くないがC++知らない人に勧めるのは無理があると思うぞ。
We assume that you already know C++ …
と書いてあるし、C++知らなければC++がわからないかQtがわからないのか判別もできない
441 :
デフォルトの名無しさん :2010/10/15(金) 23:10:10
>> 433 やる気が充分にあれば、C++のサイトはどれも必要ないよ。
その理屈はおかしい
>>438 オライリーの本、Pearlは最初のほうで、Pythonはクラスに入る前くらいで投げマンコ
楽になるからライブラリ使うってスタンスの人なら、遠回りしたくない罠。 ソース呼んだり試したりするのが好きな人はするし。
>>443 良し悪し抜きにしてラクダ本だとすると癖があるし、Python も癖強いから
それに挫折したから挫折するとは限らない
気を取り直してとりあえず頑張ってみると良いと思う
とにかく簡単なコードを書き続けることが大事
書かなければ書けるようにはならない
簡単なコードは一回書くともう書く必要なくなるんだよなあ・・・そのためのプログラムだし みんな書いては捨て書いては捨てするのかなやっぱり
複雑なものほど一回書くともう書く必要なくなるように工夫するもんだが
一年経つと拙すぎて書き直すよ
449 :
426 :2010/10/16(土) 03:03:49
ダイナミックで解決した
あれ? Qt関係ないんですけど、このスレってもしかしてsage進行推奨ですか?
451 :
デフォルトの名無しさん :2010/10/16(土) 20:48:53
>>442 やる気があれば、C++サイトなんか見ないでもやれるということだ。
>>450 調べもせずにぬるいことを聞いたり、LGPLでただで使えるという貧乏人が多くなったからだよ。
いや、本かWebサイトのどっちかは必要だろ エスパーかよ
eclpse 3.5.1 cdt 6.02 qt eclipse integration 1.5.3 qt 4.6.2 linux qt intergrationが上手く動かないのですが、何か問題がありますか?
>>452 それが真の天才C++プログラマw
そんなやついねーよな
455 :
デフォルトの名無しさん :2010/10/16(土) 21:39:13
>>452 Webサイトは駄目だと。やるなら本を読むことだ。
>>454 演奏家と同じでトップレベルはとんでもない天才がいる。
ほとんどのプログラマーは、場末の演奏家程度にもなれない。
456 :
デフォルトの名無しさん :2010/10/16(土) 21:45:15
『本を読め』で済むのに、『必要ない』とか『見ないでもやれる』とか性格ねじ曲がってんな
>>455 とんでもない天才でも読まなきゃC++は出来ないだろう。
適当な嘘つくなよ。
このスレ的外れなレスしてどや顔する奴が1人居座ってんだよな 本人は鋭い指摘をしてるとでも思ってるんだろうか
オレオレ
批判するなら論理的にやらないとね ほのめかすだけして勝った気でいるヤツが一番滑稽
少なくとも俺の知ってる奴で天才はいない いたら有名になってるはず
ホントにそんな天才なら新しく俺言語作っててC++には来ないだろうな。 Linus TorvaldsでもC言語だし。
I hate C++ と言い切ったひとなら知ってる
クラス機能以外はC++はいらない まじで論理性が身につかなくなる てかハード寄りの人にとって、C++の抽象化はハードの性質と何の関係もないところにあるから邪魔なだけ
なんですか、この流れ(;´∀`)
>>466 でも、ジェネリックプログラミングを理解してないマって、ぶっちゃけ知能が足りないよね(´・ω・`)
>>457 コンパイラを逆アセンブルしたら何か分かるんじゃね?
…うん、Javaチュートリアル読んだけど全然ジェネリックの意味が分からなかったわ…。 あれ、ジェネリックの事あらかじめ分かってないとちんぷんかんぷんだよね。 <T>っていきなり書かれても何の事だかさっぱりだったわ。 C++プライマーでやっと理解出来た。
473 :
433 :2010/10/17(日) 21:37:16
結論どころか、良さそうなサイトの例すら出てないのね… 使えねーお前らバーカバーカ
>>473 C++知らない人間がいきなり web だけでできるようにって無理がある
というのがわからんのかなぁ
天才じゃなければ実質的に本を読まなきゃ無理だよ
web は感じ掴んでる人が情報探すには便利だけど
433 本人ならどうしようもない人間としか言いようがないな
新人類かもしれんから、そこら辺には突っ込まないよ、俺は。 俺は本の方が理解が進む人間っぽいけどさ。
いや、本のほうがいいのはわかってる。だからオライリーの本だらだら読んでたんだしさ。 C++ならメジャーだし、PCだけで出来るから、Qtやる程度に丁度いいのあればと思って聞いただけ。 てか、新人類っていつの時代の人間だよww
いいから入門本としてプライマーかロベール読めよオラぁ
プライマー3版は鈍器すぎる...
Phononを利用してMP3などにエンコードされたファイルをPCM形式のWAVファイルに変換することはできますか?
Phonon には、エンコーダーないからできない。 WAV は、ベタだから、自分で書き出すというのなら、AudioOutputDevice 書けばできるだろうが、 そんな面倒なことはしないで、普通にffmpeg とか使えばいいんじゃないか。
Qt Conference - Tokyo 2010ってUSTREAMとかで放送してくれないかな
qobject_castってdynamic_castより型のチェックが厳しいんだね
MainWindow* Application::createMainWindow() { MainWindow *w = new MainWindow(); return w; } int main(int argc, char *argv[]) { Application a(argc, argv); MainWindow *m = a.createMainWindow(); m->show(); return a.exec(); } こんな、コードを書いた場合でもMainWindowの、デストラクタが呼び出されるのは何故ですか?
QObjectのおかげ。
>>485 よろしければ詳しくお願いします。そういう場面に出会ったことがないもので...
489 :
485 :2010/10/23(土) 10:45:02
QTabWidgetとQTabBarって何が違うんですか?
>>490 ためしにQTabBarつくってshowしてみたらわかる。
492 :
490 :2010/10/24(日) 19:11:36
>>491 QtabBarは何も表示されないね
ちょっとリファレンスがを読んでみたけど、
QTabBarは本当にツールバーだけ、QTabBarはそれ以外も表示するみたいね
QObjectってスマポと同じこともやってくれるんですか?
>QTabBarは本当にツールバーだけ、QTabBarはそれ以外も表示するみたいね イミフ
qpointerって何使うんですか?
>>494 まさにそうなんだよ。
QTabWidgetは、タブバーがあって、その下に(向きは設定で変えられたかもしれんが)ウィジェットがある。
QTabBarは、そのタブバーの部分だけ。
>>493 うん。自動解放とかやってくれる。
500 :
495 :2010/10/25(月) 23:06:50
>>496-497 レスありがとうございます
qpointerはquto_ptrということでOKなのでしょうか?
502 :
497 :2010/10/26(火) 02:53:17
QtCore4.dllとQtGUI4.dllでサイズが10MB超えるのってどうにもならない? 全部の機能は使わないだろうから、小さく出来るなら小さくしたいのだが
505 :
デフォルトの名無しさん :2010/10/27(水) 00:49:24
Qt 4.6.3. OS Linux QWidgetだとレイアウト突っ込んだら整列されるのに QMainWindowにレイアウトつっこんでも整列されねぇ。 なにこれ、そういうもんなの? ちなみにヘッダーは qmainwindow.h C++タイプの.h省いたヘッダーと、.h付きの違いが解らん。 Qt4とQt4の違い?
Qt Creatorで適当なところにブレークポイントを置いてその時点でのローカル変数の内容をデバッグ窓からお手軽に見たいと思ったとき ブレークしてから変数の内容を表示するまでに40秒くらいかかってしまうのですがこれは我慢するしかないですか?
508 :
505 :2010/10/27(水) 01:05:05
QTを使っていて、二つの絶対パスから相対パスを作りたいんだけど、おすすめの方法を教えてください。
>>505 $ cat /usr/include/QtGui/QMainWindow
#include "qmainwindow.h"
だから、どっちでも一緒だけど、わざわざこんなファイル作ってるんだからQMainWindow使ってあげて。
> QWidgetだとレイアウト突っ込んだら整列されるのに
> QMainWindowにレイアウトつっこんでも整列されねぇ。
> なにこれ、そういうもんなの?
よくわからん。QMainWindowでもちゃんとできると思うが。
>>509 QDir::relativeFilePath
>>505 QMainWindowのcentralWidgetにつっこみなはれ
>>506 基本的には速いマシン使うしかない。
ただ,Qt Creatorが2.0系統になったところでかなり改善された気がする。
おいらもイケメンって褒め讃えられたいので、おいらにも答えられる質問ぷりーず
QPointerってQObjectのサブクラスじゃないとダメなのね QPointer p = new QObject; ってするて型は何になるの?
QGraphicsLineItem じゃなくて、QGraphicsRectItem や QGraphicsEllipseItem だとうまくいくのに、 QGraphicsScene に QGraphicsLineItem オブジェクトを配置した場合、 QGraphicsItem * QGraphicsScene::itemAt(QPointF&, const QTransform &) でそれが取得できないのは何故? 線分にマッチするには何か特殊なおまじないが必要なんでしょうか? 教えて>イケメンの人
520 :
516 :2010/10/27(水) 22:39:36
>>518 QPointer以外にこういった使い方をするクラスを見たことがないんだよ
教えてよ
521 :
504 :2010/10/27(水) 22:45:27
付属のツールqconfigで機能の有効・無効を細かく指定できるみたい それでもまだDLLがでかくなるならUPX使ってみるか・・・
もし一般公開する場合、UPX使うとウイルス誤爆が増えて ユーザにあいつウイルスばらまいてるって中傷受ける羽目になるからやめといたほうがいいぞ
IT業界のイケメンが集うスレはここですか^^
テキストファイルからQStringListに行単位で一気に読み込もうとして以下のように書いたんだけど うまく行かない。 QStringList list; QFile file("./hoge.txt"); file.open(QIODevice::ReadOnly); QDataStream stream(&file); stream >> list; file.close(); 大域関数として定義された演算子として, QDataStream & operator>> (QDataStream & in, QStringList & list); ってのがあったのでうまく行くかと思ったんだけど... 何が悪いのでしょう?
526 :
525 :2010/10/28(木) 14:58:57
自己レス。
結局,以下のようなコードでできた。
QStringList list;
QFile file("./hoge.txt");
file.open(QIODevice::ReadOnly);
QString str = QString::fromLocal8Bit(file.readAll());
list = str.split("\r\n");
file.close();
>>525 の下の方に書いた演算子>>の使い方は結局わからないけど,
まぁいいか。
>>526 とりあえず解決おめ
うまく行かないコードの場合、そこにブレークポイントかけて
Qt ソースの中までステップ実行すると、何が悪いのかわかる場合があるよ
>>525 逆をやってみるといい
listに適当な文字列のlistを入れて stream << list; で書き出し
hoge.txtの中身
[list.size()] 4byte
[list.at(0)のバイト数] 4byte
[UTF-16]...
つまり
QDataStream & operator>> ( QDataStream & stream, QStringList & list )
が期待するQDataStream は、この形式で収められたバイト列
529 :
528 :2010/10/28(木) 15:51:15
どの形式で収められるかは Reference Documentの Format of the QDataStream Operators を参照 QFile::open でテキストを開くとき、フラグ に QIODevice::Text を 入れておくと、改行文字を"\n"に統一してくれるので便利
530 :
525 :2010/10/28(木) 16:08:31
>>527 どうもです。
> うまく行かないコードの場合、そこにブレークポイントかけて
> Qt ソースの中までステップ実行すると、何が悪いのかわかる場合があるよ
今度謎の現象に出会ったらやってみます。
>>528 ,
>>529 あぁ,そういうことですか。これは可読性のあるテキストファイルに読み書きするのではなくて,
QStringListの中味をシリアライズしてファイルに保存したり再利用するための機能なんですね。
ありがとうございます。
531 :
525 :2010/10/28(木) 16:10:20
>>529 > QFile::open でテキストを開くとき、フラグ に QIODevice::Text を
> 入れておくと、改行文字を"\n"に統一してくれるので便利
これは気がついていませんでした。サンクスです。
QStringList に一気に読み込む機能はないが、テキスト扱うなら QTextStream の方がいいんでないの。
こんなところか QStringList list; QFile file("./hoge.txt"); file.open(QIODevice::ReadOnly|QIODevice::Text); QTextStream stream(&file); while(!stream.atEnd()) stream >> list; file.close();
× while(!stream.atEnd()) stream >> list; ○ while(!stream.atEnd()) list << stream.readLine();
int main(int argc, char **argv) { QCoreApplication a(argc, argv); QPointer<Target> t(new Target); return 0; } こんなコードを書いてみたんですが、デストラクタが呼ばれないんですけどorz
QCoreApplicationだからじゃね
QSharedPointer使えばいいんじゃね?
539 :
525 :2010/10/29(金) 10:24:43
540 :
504 :2010/10/29(金) 10:37:45
コンパイルエラーにならない限り、なるべく多くの機能を削ったら CoreとGUI合わせて4.45MBになった。 ・・・UPXはウイルス対策ソフトのメーカーが誤検出対策してくれていることに期待しよう
OpenGL使ったサンプルのBoxesって、GUIの描画もOpenGLでやってる? ダブルクリックしたら裏返るし、このウィンドウはメインウィンドウの外に出せないし。
>>538 リファレンスカウントがいらないなら QScopedPointer もあり。
QDockWidgetのドックエリアをプログラム側から変更するにはどうすればいいですか? QMainWindowのremoveDockWidget→addDockWidgetではできませんでした
>>545 addDockWidget() で出来る。
removeDockWidget() で一度 hide() されているので、 show() が要るけど。
QMainWindowの状態を保存したいのですが、どのようにすればいいですか? ×ボタンを押す→次に起動した時にウインドウサイズetc etc..を復元
>>547 ドキュメント読め
saveState() とか restoreState() とかそれっぽいのあるだろ。
549 :
547 :2010/10/30(土) 23:53:37
QtにStringWriter/StringReaderに相当するクラスはないのですか?
551 :
180 :2010/10/31(日) 02:21:04
552 :
デフォルトの名無しさん :2010/10/31(日) 11:52:15
QString に "M1.2,3.4" の様に 'M' に続けて2つの実数がカンマ区切りで入っているとき、 これらの実数の値を QPointF に取り込むにはどのようにするのがスマートなのでしょうか? 教えてください>イケメンの人
// QRegExp を使う方法。 QString str("M 1.2,3,4"); QRegExp rx = new QRegExp("M\s+([0-9\.])+\s*,\s*([0-9\.)+"); if (rx.indexIn(str) != -1) { point = new QPointF(rx.cap(1).toDouble(), rx.cap(2).toDouble()); } // QString::split を使う方法 QString str("M 1.2,3,4"); if (str.midRef(0,2)=="M ") { QStringList strvals = str.mid(2).split(","); point = new QPointF(strvals[0].toDouble(), strvals[1].toDouble()); } 動作は確認していない。
554 :
デフォルトの名無しさん :2010/10/31(日) 14:08:20
>>553 わーい、イケメンの人ありがとうございます。
ご教授の方法以外にも、?int ix = indexOf(',') でカンマの位置を取得し、
str.mid(ix).toDouble() で変換する方法も考えました。
他にも、cchar * に変換して sscanf を使うってのも考えられます。
で、どれが一番いいんでしょうか?>教えてイケメンのカコイイ人
>>554 好みの問題だと思うけど、わざわざsscanf使うメリットは見えないかなぁ。
556 :
550 :2010/10/31(日) 17:31:46
自己解決した
qDebug()ってリリースビルドしても、メッセージが出力されるんだね ダメじゃん
>>554 Qt に限った話じゃないけど、C++ って自由度がありすぎて、どの方法が
最適なのかわからず悩んでしまう場合が多い
> 好みの問題だと思うけど
まだ、Qt 使い始めたばかりで自分の好みがはっきり決まってないんだよねー
とりあえず、分かりやすくて、処理速度が速いってのを基準にすることにするよ
正規表現は好き嫌い分かれると思うけどなぁ。 エラーチェックのしやすさ(入力が適切じゃなくても、落ちない変にならない)も考慮に入れた方がいい。
560 :
デフォルトの名無しさん :2010/10/31(日) 19:47:46
>main.o:/usr/include/qt4/QtXml/qxml.h:376: more undefined references to `vtable for QXmlDefaultHandler' follow >ファイルが見つかりませんでした: main.o: /usr/include/qt4/QtXml/qxml.h こんなメッセージが出て怒られます 何ですかこれ? QMainWindowをインクルードする時は#include <QMainWindow>でいいのですが、 xmlモジュールは#include <QtXml/QtXml>と書かないと怒られます help me
561 :
560 :2010/10/31(日) 20:20:17
解決してしまった スマソ
563 :
560 :2010/10/31(日) 21:33:34
>>562 *.proにQT += xmlを入れただけ
プロジェクトを作るときに、「空のQt4プロジェクト」を選んだから気がつかなかった
GJ!
qDebug()って具体的にはどんなものに出力してるんですか? マクロなり作ってリリース時には消えるようにするべき?
自分で#ifdefとかの分岐で消すの? そんなあほなことしなくていいのに
>This function does nothing if QT_NO_DEBUG_OUTPUT was defined during compilation. とあるから#include <QtGloball>する前に#define QT_NO_DEBUG_OUTPUTとかすればいいんじゃないでしょうか
いちいちソースに書くのか?
いや別にコンパイラオプションで指定してもいいけど
pro に DEFINES += QT_NO_DEBUG_OUTPUT を追加すればいいはず。
>>572 本当だデバッグプリントが出ない
qDebugってあんまり便利じゃないよね
そうね
QMap::insert/QMap::insertMultiの違いは何? 置き換えるか、新しく作るかみたいな事は書いてあるのはわかるんだけどさ..
>>573 handlerいじって出荷版でもアプリログに利用させてもらってるから
私としては便利だな
thread safeじゃないから、その点は注意が必要
QXmlStreamWriter/QXmlStreamReaderってセットなのね QDomDocumentとかとは関係ないの?
>>578 QXmlStreamWriter/QXmlStreamReader は QtCore
QDomDocument は QtXml
というわけで、関係ない。
580 :
578 :2010/11/03(水) 22:03:13
自作ライブラリってどう読み込ませるの? VS2008で作った自作ライブラリを Qtアプリで組み込もうとすると未解決シンボルがでる もちろん LIBS += ライブラリ名.lib は追加してある 自作ライブラリはWin32アプリ(VS2008)では普通に読み込める
libライブラリ名.a にするんじゃなかったかな
>>582 それはUnix系の場合で、Windowsならライブラリ名.lib
(とsharedの場合はライブラリ名.dll)
>>581 LIBS += -L(ライブラリのパス) -l(ライブラリ名)
でどうかな?
>>581 win32:LIBS += MyChinpo.lib
win32:QMAKE_LFLAGS += /LIBPATH:C:/Path/To/MyTChinpo/
とかかね?環境変数LIBに自作ライブラリのパス通して
リンクが通るなら、link.exeに/LIBPATH渡せばいけると思う。
>>581 リンクの失敗じゃなくてマングリングに失敗してるとか?
>>583 >>584 ダメでした
>>585 マングリング?よくわからないが解決方法は?
ちなみにコンパイルは全部VS2008で統一されてるはず
誰か簡単なライブラリうpしてくれないか?プロジェクト込みで
それ参考にしてみたい、環境はwindowsで
ランタイムのマルチスレッドやDLLの使用等がQtと自作ライブラリで異なっているんだろう
588 :
581 :2010/11/04(木) 18:39:58
>ランタイムのマルチスレッド 両方 /MTd です >DLLの使用 "MFCの使用"と"ATLの使用"のことか それは"標準Windows"と"ATLを使用しない"を同じく設定してあるぜ
>>588 じゃあ、未解決シンボルの一部を貼ってみてよ
590 :
581 :2010/11/04(木) 18:48:23
>未解決シンボルの一部を貼 エラーメッセージのことか? error LNK2019: 未解決の外部シンボル "void __cdecl Msg(unsigned short const *)" (?Msg@@YAXPBG@Z) が関数 "private: void __thiscall MyClass::on_pushButton_clicked(void)" (?on_pushButton_clicked@MyClass@@AAEXXZ) で参照されました。
591 :
581 :2010/11/04(木) 18:57:28
言語の設定いじったら通った ー完ー
592 :
デフォルトの名無しさん :2010/11/05(金) 09:01:53
Qtやろうかと思ったがVC++入れたくない なんなの!MinGWと見て分かるくらい実行速度に差があるとかなんなの! わいとQtには縁がなかったんや・・・
>>592 MS SDKでもおkなんだけど,それでもダメ?
> なんなの!MinGWと見て分かるくらい実行速度に差があるとかなんなの!
> わいとQtには縁がなかったんや・・・
杉田さんが書いたヤツだね。
QtのGUIに関してはそうなのかも知れないけど,例えばSTLのコンテナの速度なんかは
ベンチマークやってみたらVC++よりMinGWの方がかなり速かった。
ベンチマークとは言っても,ある特定の処理をやるプログラムでの話なので公表は
できないんだけど。
どっちもどっちとも言えるんじゃないかな。
>>592 どうせなら Borland C++ Builder とか Intel C++ Compiler とかで茨の道を進もうぜ
実用に耐えるかは知らないけど
mingwで桶 しかしdllだけで100MBってなんとかならんかな
GUIだって明らかに違うってほど検証されてるわけでもないし
MinGWにもいいとこあるんだよってことか。じゃあMinGW入れるべ・・・
>>595 デバッグ用のdll見てるに1万ペリカ
俺もmingwのほうが早いんだが コンパイルオプションとか変えればVCのほうが早くなるの?
おい今ちょっとVisualC++2010試してたら テキストエディターオプションに「BOMなしのUTF-8エンコードを自動検出」ってのがあるんだが・・・ UTF-8だろうがUTF-16だろうが断固としてBOMを認めないgccと 絶対BOM至上主義のVCとの間の冷戦がとうとう終結したのか・・・? もうUTF-8使っても・・・・いいよね・・・?
自動検出しなくていいからエンコード指定オプション付けてくれよ
>>599 エディタの問題じゃなくてコンパイラの問題じゃなかったか?
BOM無しだとUTF-8だと思ってくれない
そうなのか・・・ぬか喜びごめん・・・
qt creator 2.0ってqt 4.7に依存してる?
>>604 してない。俺はQt 4.6.3で使ってるよ。
606 :
604 :2010/11/06(土) 21:55:53
>>605 linux使っているんだけど、qt 4.7を要求してくるからさ
macだと4.6でも動くにと思ったから
ありがとうよ
>>606 linuxで使ってくるけど別に要求しないぞ
オプションで選択できるだろ
使ってるディストロが提供してるqtcreatorがqt-4.7で握ってるんじゃねーの?
609 :
604 :2010/11/06(土) 23:36:48
>>608 そうそう、パッケージ管理システムが勝手にqt 4.7を連れてきちゃうの
>>609 qt-4.7入れるのが嫌なら古いリポジトリのqt-creator使うか、
それか諦めてqt-4.7にしたら?
qt-4.7にするの、嫌?
公式からバイナリアーカイブ落として~以下のどっかに展開して使えばどうか
Qt4.6を自前ビルドで入れてるんだろうし、公式からQtCreator落としてビルドすればええんちゃうん。
613 :
609 :2010/11/07(日) 00:08:37
>>610 ebuildを使っているので、rpm/debよりもインストール時に問題が発生する確率が高いのさ
>>613 なんだお前はgentoo使ってるくせにガタガタ文句抜かしてたのか。
ubuntuでも使ってなさい。
gentooなら仕方ないな qt-creatorを自前ビルドしてlocalまたは適当なディレクトリをprefixに指定してインスコしてパス通すでいいと思う 俺はそうしていた
>>614 今それどころじゃないんだって
kdeのせいでシステムがめちゃくちゃになっているんだって
>>617 お前、gentoo使ったことあるのかよ...
結局何がしたいのか。
>>618 無いよ。
redhat時代からソースパッケージの自ビルドはしてるし、
パッチ取り込みやちょっとした修正は自分でしてるけどね。
ちなみにfedoraのrawhide使っててもデスクトップだけはKDE3のままですぅ…。
だからKDE4の依存関係の問題はちょっとよく分からないかもですぅ…。
で、やりたいのは苦労自慢?だとしたら下らないっすよ。
もっと楽するか、それか苦労するんならLFSレベルで苦労するか、どちらかにしたら?
まぁ楽しいからやってるんだろうけど、その愚痴のこぼし方は間違ってる。
「うはwwwww俺gentoo使うとか変態wwww依存関係ぶっ壊れて超やべぇwwww」
ぐらいにハイな気持ちで何とかしていく位が丁度いいのではないのかな。
とおじさんは思うのであった
とりあえずさっさと移動してくれい。
もうレスを断つよ
622 :
デフォルトの名無しさん :2010/11/07(日) 13:08:13
QTabBar使いたいんだけどデザイナで使えなかったりTabPositionが無かったりで QTabWidgetを縮めて使うべき?
QTabWidgetで代用できるならそれでいいんじゃない? 俺はQTabWidgetと同等なクラス作って利用してるけど
デザイナでは、QWidgetの派生クラスってことにしといたらダメなのかなぁ。
Qt使ったらstd::wstringが糞だってことがよくわかったぜ
>>625 Qtに限らずほぼなんでもstd::wstringよりは上だと思うぜ。
wchar_tの中身くらい仕様で決めればよかったのに サイズも内部表現も環境依存とかどうしろっていうんだ
そもそも char の大きさが環境依存なんだから仕方無い
スレ違い
*.proのこれって何なんですか? CONFIG += console CONFIG -= app_bundle
ヘルプの「Qt Reference Documentation」によると console The target is a Win32 console application (app only). The proper include paths, compiler flags and libraries will automatically be added to the project. Win32コンソールアプリ指定 These options only have an effect on Mac OS X: Mac OS Xだけで有効なオプション app_bundle Puts the executable into a bundle (this is the default). Macは知らんのでよくわからないけどバンドルに実行ファイルを含めるフラグ? CONFIG -= app_bundle だからバンドルに実行ファイルを含めない指定ってことかな?
× ヘルプの「Qt Reference Documentation」によると ○ ヘルプの「qmake Variable Reference」によると だった
自作したQtアプリにどのDLLを同梱すればよいかを調べる方法はありますか? QtCoreとかはQtが入っていない環境で実際に起動してみればすぐ分かりますけど、 codecs/qjpcodecs4.dllなんかはエラーにならないので困ってます
win限定だけどDependency Walkerとか使えば
コンパイル時にリンク指定した動的ライブラリはDependency Walkerとかlddコマンドとかで分るけど pluginみたいにQtが実行時に読み込む動的ライブラリって、上記のコマンドで分かるんだっけ?
暗黙的リンクされたDLLしかわからんでしょ LoadLibrary/dlopenで明示的にロード/リンクするタイプのやつはだめ 実行時にプロセスによってロードされてるDLLはProcess Walkerとかで見りゃ分かるけど それもあくまで現在ロードされているものがわかるだけ
>>636 Profile実行するんじゃだめなん?
Linuxなら lsof するとか。
639 :
デフォルトの名無しさん :2010/11/09(火) 12:36:03
QString に入っているテキストの 改行 → <br>、< → < の様に 変換する関数はあるのでしょうか?
あれ &lt; って書いたら < に変換されてしまった。 < → (半角の)&lt; に変換です。
>>640 QString::replace でどうとでもなりそうな気がするケド?
マニュアルにその手の例が載ってたと思うぞ
>>641 イケメンの人、お返事ありがと。
replace でどうにでもなるのは分かってるけど、PHP みたいに
変換する専用の関数があるならそれを使おうと思って、
ヘルプ探しても見つからなかったので、念のためにここで聞いてみたんです。
どうやら無いみたいなので、自分で置換することにします。
ある夜
まずマニュアルの見方から勉強しようね
それが終わったら
>>641 をもう一度見てみるといい
>>639 QString Qt::convertFromPlainText( const QString & plain, Qt::WhiteSpaceMode mode = Qt::WhiteSpacePre )
あるいは<br>以外なら
QString Qt::escape( const QString & plain )
あたりがお望みの関数だと思うが、自分で作ったほうがいいかも
4.7.1 リリース
Qtってdelegateに関するクラスあるんだね 知らんかった
機能ごとにソースをディレクトリに分割したいんだけど、 qt creatorではどうやるの?
各ディレクトリに入れたソースをプロジェクトに追加していくだけだけど、 何か問題ある? 画面の左の方のプロジェクトの一覧のところで、プロジェクト名を右クリック して、「新しいファイルを追加」や「既存のファイルを追加」でやればいいだけ。
QGraphicsViewにテキストを表示して,バックグラウンド(フォント領域の)をテキストとは 別の色で塗りつぶしてラベルのようにするやり方がわかりません。 QGraphicsViewのバックグラウンドとも別の色で,付箋紙のようにしたいんだけど。 QGraphicsScene* pScene = new QGraphicsScene(0, 0, 200, 300, this); ui->graphicsView->setScene(pScene); QGraphicsSimpleTextItem* pItem = pScene->addSimpleText("Test"); pItem->setPos(130, 10); pItem->setPen(QPen(Qt::green)); pItem->setBrush(QPen(Qt::green)); これで緑色の文字は書かれるんですが,バックグラウンドの色を変える方法がヘルプを 読んでも見つけられませんでした。わかる方,ご教示ください。
653 :
sage :2010/11/11(木) 11:55:02
QGraphicsSimpleTextItem のサブクラスを作って paint メソッドをオーバーライドして自分で作る
QGraphicsRectItemを下に敷くとか
>>653 ,
>>654 ありがとう。それらも考えたんだけど,とりあえず自己解決しました。
QGraphicsScene* pScene = new QGraphicsScene(0, 0, 200, 300, this);
ui->graphicsView->setScene(pScene);
QGraphicsSimpleTextItem* pItem = pScene->addSimpleText("Test");
pItem->setPos(130, 10);
pItem->setPen(QPen(Qt::green));
pItem->setBrush(QPen(Qt::green));
QRectF rect = pItem->mapRectToScene(pItem->boundingRect());
pScene->addRect(rect, QPen(Qt::darkblue), QPen(Qt::darkblue));
pItem->setZValue(1.);
出来たけど手数が多いです。もう少しさらっとできると良いんですが。
656 :
デフォルトの名無しさん :2010/11/11(木) 13:09:19
おめ
>>655 それだと、テキストアイテム移動したときに背景矩形がいっしょに移動してくれないんじゃないの?
QGraphicsRectItem を作り、QGraphicsSimpleTextItem をその子アイテムにした方がいいのでは?
658 :
655 :2010/11/11(木) 15:05:11
>>657 > それだと、テキストアイテム移動したときに背景矩形がいっしょに移動してくれないんじゃないの?
そうですね。まぁ,今回はテキストは描いたら移動しないんでいいんですが,将来自分で参考にするために
勉強だと思って書いてみました。
QGraphicsScene* pScene = new QGraphicsScene(0, 0, 200, 300, this);
ui->graphicsView->setScene(pScene);
QGraphicsSimpleTextItem* pTextItem = new QGraphicsSimpleTextItem("Test");
pTextItem->setPen(QPen(Qt::green));
pTextItem->setBrush(QPen(Qt::green));
QRectF rect = pTextItem->mapRectToScene(pTextItem->boundingRect());
QGraphicsRectItem pRectItem = new QGraphicsRectItem(rect, 0 pScene);
pTextItem->setParentItem(pRectItem);
pRectItem->setPen(QPen(Qt::darkblue));
pRectItem->setBrush(QPen(Qt::darkblue));
pRectItem->setPos(130, 10);
とりあえず動いてますが,これでpTextItemとpRectItemは自動的にdeleteされるんでしょうか?
659 :
デフォルトの名無しさん :2010/11/11(木) 15:33:32
QVariant に QAction * を格納・参照しようとしたらうまく行きませんでした。 QAction *act = actFromSomeWhere(); QVariant v(act); // ← ここでコンパイルエラーになる 無理なのでしょうか?
660 :
655 :2010/11/11(木) 15:42:05
>>658 自己レスです。
> とりあえず動いてますが,これでpTextItemとpRectItemは自動的にdeleteされるんでしょうか?
ヘルプのQGraphicsSceneのデストラクタの項を読むと大丈夫なようです。
>>657 さん,ありがとうございました。
661 :
659 :2010/11/11(木) 15:46:24
QAction *act = actFromSomeWhere(); QVariant v(128, (void*)act); とすれば、QVariant に変換できるみたいなのですが、 今度は QVariant を QAction * に戻すのがうまく行きません。 QAction *ptr = qobject_cast<QAction*>(v); ← コンパイルエラーになる どうしたらいいのでしょうか?>イケメンの人
>>659 QVariant::fromValue() とか qVariantFromValue() 使えばできるんじゃないですか?
ヘルプの qVariantFromValue() のところにQObject*をQVariantに入れる例が載ってます。
取り出す方は,QVariant::value(),qVariantValue(),qvariant_cast あたりかな?
やってないので無責任モードです。
>>662 アドバイスありがと。
>QVariant::fromValue() とか qVariantFromValue() 使えばできるんじゃないですか?
これらもやってみたような気もするけど、もっかい試してみます。
> 取り出す方は,QVariant::value(),qVariantValue(),qvariant_cast あたりかな?
QVariant::value(),qvariant_cast<T>() は試してみたけどコンパイルエラーに
なりました@VS2008
664 :
662 :2010/11/11(木) 16:39:49
>>663 Grepで過去に自分で書いたソースを検索してみたら,qVariantFromValue() と qvariant_cast<T>() の
組み合わせでやってる例がありました。自分で作ったカスタム・ウィジットで使ってるんで,ソースは
そのまま貼りにくいんですが,
>>661 の例だと,
QAction *act = actFromSomeWhere();
QVariant v = qVariantFromValue(act);
取り出す方は,
QAction *act = qvariant_cast<QAction*>(v);
じゃダメですか?
さんくす>イケメンの662 VS2008 だと QVariant v = qVariantFromValue(act); でコンパイルエラーになってしまいます。orz QAction *act = qvariant_cast<QAction*>(v); も既に試してみましたが、やはりコンパイルエラーでした。
666 :
662 :2010/11/11(木) 17:06:00
>>665 あれ? 私はMS SDK v7.0でやってるんでVS2008相当だと思うんですけど...なんでかな?
私は実際には,QObject::setProperty()の第二引数(QVariant&)にqVariantFromValue()で
QWidgetから派生させたクラスのインスタンスポインタを入れてるんですけど大丈夫です。
どんなコンパイルエラーが出てますか?
今一つ話が見えてない横ですが QVariant v; QAction* act; v.setValue(qobject_cast<QObject*>(act)); act = qobject_cast<QAction*>(v.value<QObject*>()); こんなんでできないかな?
>>666 QVariant v = qVariantFromValue(action);
で、以下のようなエラーがでます。@VS2008
1>c:\qt\4.7.0\include\qtcore\../../src/corelib/kernel/qmetatype.h(222) : error C2039: 'qt_metatype_id' : 'QMetaTypeId<T>' のメンバではありません。
1> with
1> [
1> T=QAction *
1> ]
1> c:\qt\4.7.0\include\qtcore\../../src/corelib/kernel/qmetatype.h(222): クラス テンプレート のメンバ関数 'int QMetaTypeId2<T>::qt_metatype_id(void)' のコンパイル中
1> with
1> [
1> T=QAction *
1> ]
1> c:\qt\4.7.0\include\qtcore\../../src/corelib/kernel/qmetatype.h(232) : コンパイルされたクラスの テンプレート のインスタンス化 'QMetaTypeId2<T>' の参照を確認してください
1> with
1> [
1> T=QAction *
1> ]
1> c:\qt\4.7.0\include\qtcore\../../src/corelib/kernel/qvariant.h(457) : コンパイルされたクラスの テンプレート のインスタンス化 'int qMetaTypeId<T>(T *)' の参照を確認してください
1> with
1> [
1> T=QAction *
1> ]
1> .\mainwindow.cpp(854) : コンパイルされたクラスの テンプレート のインスタンス化 'QVariant qVariantFromValue<QAction*>(const T &)' の参照を確認してください
1> with
1> [
1> T=QAction *
1> ]
>>667 おおっ、それでいけました。
コンパイルエラーもでないし、期待通りに処理されているのを確認しました。
ご教授、どうもありがとうございました。
671 :
デフォルトの名無しさん :2010/11/13(土) 20:46:32
マウスボタンを押して、離すまでの間はQGraphicsScene::mouseMoveEvent() がコール されますが、これをマウスボタンを離している時もコールされるようにするには どうしたらいいのでしょうか? QGraphicsItem には grabMouse() というメソッドがありますが、QGraphicsScene にはそのようなメソッドは無いみたいでした。
setMouseTracking() は試した?
setMouseTracking() は QWidget のメソッドだけど、 QGraphicsScene は QWidget の派生クラスじゃないので、 コール出来ないです。
一応自己解決しました。 ソースを GraphicsSceneMouseMove でgrepすると、イベントオブジェクトを 生成しているのは QGraphicsViewPrivate::mouseMoveEventHandler() だけでした。 なので、 QGraphicsView オブジェクトに対して setMouseTracking(true) を コールしてあげると、QGraphicsScene::mouseMoveEvent() が常にコールされる ようです。 これでいいのかな?
QSound::play("C:/Users/hoge.wav"); ←再生できる QSound::play("C:/Users/ほげ.wav"); ←再生できない 日本語のファイルパス使いたいときはどうすればいいの?
>>676 ヒントありがとう。↓の追加したら再生できた
#include <QTextCodec>
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
いえいえ、イケメンとして当然のことを言ったまでです。
setHeaderItem();
mainwindow.uiってファイルなのに、#includeする時は"ui_mainwindow.h"なのね これ、#include "mainwindow.ui"にして欲しいな
はあ? *.ui ファイルをテキストエディタで開いて見たことある?
統合は可能だろうけどincludeするなら *.ui じゃなくて ui_*.h の方だろう
しかし、以前よりもqtユーザが増えてきた気がする このスレの勢いを見ると
Windows 版のライセンスが変更されてから Windows ユーザーが増えたみたい。 増えた分のほとんどがWindows ユーザーみたいだし。 ずっと Linux ユーザーの気配が殆どない。
includeすら分かってない奴すらGUIプログラミングできる時代なのか。 いい時代になったなぁ。
そんな奴に限って作るモチベーションだけはあってあれこれ量産するんだよな・・・ 俺は言語勉強しまくったが、気がついたら何も作りたいものがなくなっていた・・・・・・
Qtがc++のハードルを下げてる気がするなあ いい意味でも悪い意味でも
いい事じゃないの? VC++に変わるGUI構築ツールがメジャーになってくる事は。
QtがWindows趣味プログラマーのシェアをVisualStudio系から奪っていけば、自然とLinuxで使えるソフトが増えていくからとてもいいこと
いつの間にか4.7.1出てたのね
SDKの方上には4.7.1入ってるみたいに書いてあるけど実際は4.7.0だな
>>691 よしWin32APIやObjective-Cコードを所々で使っとく!
696 :
デフォルトの名無しさん :2010/11/15(月) 18:48:05
カラー選択をメニューで行いたいのですが、Diagram Scene サンプルの様に 1つのメニューアイテムに1つのカラーを割り当てると、選択できるカラー数が 限られてしまいます。 メニューに複数の色を直接選択できるダイアログの様な Widget を表示して そこから色を選択可能にすることって可能なのでしょうか?
QColorDialogのことかな
カラー選択をメニューで行いたいのです
メニューでやりたいのかWidgetを表示してやりたいのかはっきりしろ
メニューに Widget を表示してそこから色を選択可能にすることって可能なのでしょうか?
文盲がいるな
QMenuやQMenuBarにQWidgetを追加することはできない QToolBarにQWidgetを追加することはできる
703 :
696 :2010/11/15(月) 21:02:47
たくさんのお返事ありがとう > QMenuやQMenuBarにQWidgetを追加することはできない やはり無理なのですね。 無理やりやとうとすれば、QMenu の派生クラスを作って そこに自分で選択可能な色一覧を表示するのかな・・・ > QToolBarにQWidgetを追加することはできる えと、それは QToolButton に addWidget すれば 右横に ▼ が表示され、それを押すとその QWidget が表示されるって ことでしょうか?ちょいと試してみます。
試そうとしたら、QToolButton には addWidget できないみたいです。
705 :
デフォルトの名無しさん :2010/11/15(月) 21:44:10
>> QToolBarにQWidgetを追加することはできる >えと、それは QToolButton に addWidget すれば >右横に ▼ が表示され、それを押すとその QWidget が表示されるって >ことでしょうか?ちょいと試してみます。 次からは最初にそういう説明をしましょうね QToolButtonの右横の▼にはQMenuしかセットできないので、単純にQWidgetを追加することはできません 実現方法としては、QToolButtonに空のQMenuをセットし、QMenuのaboutToShowシグナルが来たらQWidgetをshowします QWidgetにQt::ToolTipやQt::FramelessWindowHintなどを設定しておけば、QWidgetをメニューの一部のように誤魔化せます 多分これが一番簡単だと思います
Qtでシステムのアイコンって取得出来ないの?
Qtってwebkitを統合しているけど、webkit全く使えないね
Indyとかよりはいいけどね俺は
>>706 QIcon icon = QCommonStyle().standardIcon(QStyle::SP_HOGE);
でいける。
710 :
デフォルトの名無しさん :2010/11/16(火) 05:54:55
kakerukana
yometayo
>>707 がwebkitを使えないってことだと思う
715 :
706 :2010/11/16(火) 22:20:57
QtDesignerで、ウィジェットを、常にウィンドウ一杯に表示したいのですが できないです 試しにウィジェットのsizePolicyを[Expanding,Expanding,0,0]にしてみましたが リサイズしても、サイズはそのままになってしまいます
>>716 QLayout系のクラスに収めてないからそうなる。
designer上では親にしたいウィジェット内に子ウィジェットを適当においてから
親ウィジェットを右クリック>レイアウト>〜〜に並べるで目的の動作をすると思うよ。
>>717 ちゃんとリサイズされました。
ありがとうございました
Ubuntu上で、静止画像(jpg, bmpなど)を全画面表示したいのですが、QTを使えば簡単にできるでしょうか。 幼稚な質問ですいません。
方法はいろいろあるけど #include <QtGui> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPixmap pixmap("image.jpg"); QSplashScreen splash(pixmap); splash.showFullScreen(); return app.exec(); }
qtってstlと一緒に動かしても大丈夫なの? 初歩的な質問スマソ
全然問題無いよ
fancybrowser(webkit)でhttpsのアドレスが読み込めない 何か設定が必要なのか,opensslはインスコしてある
fancybrowser(webkit)でhttpsのアドレスが読み込めない 何か設定が必要なのか,opensslはインスコしてある
大事なことは三回言いましょう
レイアウトしたときの余白って消せないの? 微妙にウィンドウいっぱいに広がらないけど
っ setContentsMargins()
730 :
デフォルトの名無しさん :2010/11/21(日) 00:13:45
731 :
デフォルトの名無しさん :2010/11/21(日) 00:15:25
732 :
デフォルトの名無しさん :2010/11/21(日) 00:19:59
>>723 Qtだから面倒というのでなく、やり方を調べる努力をしないからだよ。
733 :
デフォルトの名無しさん :2010/11/21(日) 00:22:03
734 :
デフォルトの名無しさん :2010/11/21(日) 00:22:53
735 :
デフォルトの名無しさん :2010/11/21(日) 00:26:20
736 :
デフォルトの名無しさん :2010/11/21(日) 00:30:50
737 :
デフォルトの名無しさん :2010/11/21(日) 00:32:31
738 :
デフォルトの名無しさん :2010/11/21(日) 00:34:45
>>725 Qt以前にネットワークを分かればいいよ。
739 :
デフォルトの名無しさん :2010/11/21(日) 00:45:45
なにこの流れ(AAry
ドキュメント嫁って書きたいヤツが一人張り付いてるんだよ。 「...できますか?」った質問に「できます」としか答えないヤツ。 いつもageだし。 あきらかにドキュメント読んでないような質問は別としても、 ドキュメントから探しても見つけられないから聞いてるケースが 多いと思う。ドキュメントは逆引きしにくいからね。 もう少し親切に答えてやってもいいんじゃないか? それが出来なくて説教たれるくらいなら、黙ってろよ。
ドキュメントに無いようなのは国外のフォーラム探すと良いぞ! このスレには期待できない
困ったら何も考えずに日本語と英語でググれば良い。
コンテクストメニューとステータスバーもuiファイルで設計できるようにならないかなぁ そうすればソースがもっと整理出来る
webkitを使って簡単な2ちゃんねるブラウザを作りたいと思うんだけど ちょっと加工して表示する場合はHTMLを使わないとダメなの?
dat持ってきてるならWebKitなんて使う必要ないんじゃね? 俺なら QTextDocument とか QTreeView の方が楽かな。
749 :
デフォルトの名無しさん :2010/11/25(木) 09:46:21
QGraphicsScene を印刷・印刷プレビューすると、画質が著しく悪くなるんですけど 何故なんでしょうか? void MainWindow::printPreview() { QPrintPreviewDialog pvDlg; connect(&pvDlg, SIGNAL(paintRequested ( QPrinter *)), this, SLOT(onPaintRequested(QPrinter*))); pvDlg.exec(); } void MainWindow::onPaintRequested(QPrinter *printer) { QPainter painter(printer); painter.setRenderHint(QPainter::Antialiasing); scenel->render(&painter); }
QPrinter printer(QPrinter::HighResolution); QPrintPreviewDialog pvDlg(&printer); でどうだろう?
751 :
デフォルトの名無しさん :2010/11/25(木) 10:45:26
>>750 イケメンの人、ありがとうございます。
プレビューはたしかに以前とは比べ物にならないくらい綺麗になりました。
けど、それを印刷すると以前と同じでした。
印刷の方は以下のようになってるんだけど、こっちもハイレゾ指定がいるのかな?
QPainter painter(&printer);
painter.setRenderHint(QPainter::Antialiasing);
自分でも調べてみます。
752 :
747 :2010/11/25(木) 19:39:50
>>748 それも、そうだな〜
jane style、jdとかはIEコンポーネントとかを使わないで、独自で実装しているらしいんだけど
難しそうだからな〜
guiビルダーの「格上げ先を指定」って何なんですか? 試しにやってみたのですが、変化を実感できないのですが
>>753 例えば、QPlainTextEditを継承して作った自作エディタがあったとして、
それを格上げ先に指定すると、自作エディタを手っ取り早くQtDesignerで配置できるようになる。
プラグインをわざわざ作るよりもお手軽(当然ながら変化は自分でコーディングしなければ無い)
755 :
デフォルトの名無しさん :2010/11/26(金) 01:52:31
こんな書き方で判ってもらえるか・・・、すみません、どう書いたらいいのか・・・。 QWidgetにQGraphicsViewを載せてそこにQGraphicsSceneを設定して QPainter::drawRect()、QPainter::drawLines()で沢山お絵かきをした状態で初期表示します。 同一QWidgetにQCheckBoxも載せていて、ON/OFFによって色を変更したり 追加でお絵かきするプログラムです。 んで、QWidgetを表示して入力待ちにする時、QGraphicsView以外はすぐに表示されるのですが、 QGraphicsViewが完全に表示されるのに多少のタイムラグが発生しています。 この間にQCheckBoxを操作(クリック)すると、画面が固まってしまうのが悩みのタネです。 QGraphicsViewの描画の完了を待ち合わせてからQCheckBoxの入力を受けつけるように、 QGraphicsViewのViewportにイベントフィルターをインストールして Paintイベントに対する処理の完了を待ってから、QCheckBoxをEnable状態にしてみたのですが、 このタイミングではまだ描画が完了しておらず、(QCheckBoxを操作すると)やはり、画面が固まってしまいます。 QGraphicsViewの描画の完了を待ち合わせるには、どうしたらよろしいのでしょうか?
QPainter::drawRect()、QPainter::drawLines()で沢山お絵かきをした状態 が終わったらemition
cairoに相当する機能ってありますか?
758 :
デフォルトの名無しさん :2010/11/26(金) 08:29:39
>>756 ありがとうございます。
試してみます。
Qt Creator 2.1RC出たね
PySideのwindows使ってみたけど全然ダメだ。 特にwebkit関連の実装が全然できてねぇ。 すんげぇ無駄な時間食った・・・ おとなしくライセンス諦めてPyQT使うか、他言語のQT使うのが吉だな
contributeすればあなたの時間は無駄ではない みつを
Mac版のQtCreatorを使用しているのですが、ショートカットでの補完機能が動きません。 キーはコントロール + スペースに割り当てています(デフォルト)。 Spotlightのショートカットは切ってあって、eclipseではコントロール + スペースで補完出来ています。 Mac版は何か特別な設定が必要なのでしょうか。よろしくお願い致します。 OS: Mac OS X 10.6.5 QtCreator: 2.0.1
Qtを始めたのですが入門書はどれがいいでしょうか とりあえず調べてみたら「入門 Qt 4 プログラミング」というのがあったのですが... 高校生でCとC++は使えます
それでいいよ
>>765 ありがとうございます
ただAmazonにはあまり良いレビューがなかったので...
>>764 とりあえずその本は参考にはなるけど、Qt Creator登場以前の本だから、
Qt Creatorのことは書いてない。Qt Creatorについて書いてある本は
まだ無いと思う。
Qt Creatorについては自力で英語のドキュメント読むしかない。
脅すようだけど、Qtやる以上、英語を読むことは避けて通れないと
思った方がいいよ。
若いから何でも吸収できると思うのでガンガレ。
>>764 その本持ってるけど、日本語版はファーストエディションのままなんだよね
それで、Qtのヘルプにものってるけど、同じ本の英語版はPDFで無料配布されてるから、
とりあげず落としてみてどんな感じか見てみるといいと思う
>>767 そうだね。Qt Creatorのことが書いてないのもそうだけど、
本に載ってるコードはQt Creatorの自動生成するコードと
ちょっと勝手が違うところがある。
載ってるソースにも色々間違いがある 誤植かも知れないけど
772 :
デフォルトの名無しさん :2010/11/27(土) 14:42:26
>>767 Qtでコードが書けてビルドができるようになれば、Qt Creatorはドキュメントを読まなくても使えるよ。
>>770 生成されるコードもひとつの書き方で、両方分かればよいのではないかな。
>>771 出版社に伝えた方がいいよ。
773 :
766 :2010/11/27(土) 14:49:15
>>767-771 ありがとうございます
英語にはそれなりに自信があるのでそのドキュメントを読んでみます
おぉ、頼もしい。
マニュアルの英語はわかりやすく書いてるから高校英語で充分だろ
高校時代英語の偏差値30前後だった俺が読めるんだから並の高校生なら問題ないはず。
wikipediaを見るとskypeがqtで作られているらしいんだけど、 windows版のskypeはqtで作られているの? linux版だとqtに依存しているから、qt使われているな〜って実感できるんだけどね
Linux 版だけだった気がする。
sqliteのマネージャなんかはqtで作られてるっぽいよ。
>>768 ありがとうございます。
補完機能が使えるようになりました。
QObject::killTimers: timers cannot be stopped from another thread これどういう条件で発生してるのかさっぱり分からん・・・
782 :
デフォルトの名無しさん :2010/11/30(火) 06:12:11
>>781 http://doc.qt.nokia.com/4.7/threads-qobject.html Event driven objects may only be used in a single thread. Specifically,
this applies to the timer mechanism and the network module. For example,
you cannot start a timer or connect a socket in a thread that is not the object's thread.
>>782 あー、なるほどそういうことか・・・
ありがとう
Httpの定時アクセスとXMLソケットへのアクセスを同一スレッドでやってたわ
784 :
デフォルトの名無しさん :2010/12/01(水) 22:39:18
785 :
784 :2010/12/01(水) 23:55:52
エクスプローラーにも上の部分(ヘッダーと言うらしい)が付いてますね。 削除するものではないようです。お騒がせしました。
えっ
PySideの1.0ベータが出てたんでためしてみたが、 使えなかったQwebframeまわりが使えるようになってた。 これはいけそう。 再度置き換えに挑戦する
乙
PySide for windowsのまとめ。 Qt Designerで作ったuiファイルはPySideのuicで問題なく使える。 PySideはQString、QStringList、QVariantが無いで少々面倒だったけど、 簡単なラッパーモジュール用意しておいたおかげで、 ラッパーモジュールの from PyQt4をfrom PySideに変えただけで済んだ。 あとはconnectとemitの挙動が若干違うくらいか。ここじゃ説明めんどいんで 要望があればソース出して解説する。 QWebView+Javascript<=>QWidgetの連携も、PyQtもPySideも公式ドキュメントとは少々 違う方法じゃないといけないけど、結構いい感じに出来る。 とりあえずこれからはPySideで作っていこうと思う。
791 :
デフォルトの名無しさん :2010/12/02(木) 12:58:50
テキストエディタの様なものを作っているのですが、 QTextEdit などで Ctrl + 左右矢印 で単語単位移動したとき、 この文章の様に、漢字とひらがらがあるときに、漢字とひらがなの 境界を単語区切りとみなしてくれません。 なにか設定があるのでしょうか? それともキーイベントハンドラで自分で漢字ひらがな等の判定を 行う処理をするしかないのでしょうか?
QtTextEditって日本語使えないんですか? textEdit->append ("こんにちは、世界") とやると文字化けして読めません。回避方法が有ったら教えて下さい。
>>792 QString の文字コードを設定していないからだと思う
794 :
792 :2010/12/02(木) 13:51:21
具体的にはどうすればいいのでしょうか。
796 :
792 :2010/12/02(木) 14:49:20
>>795 エスパー能力を発揮すると
>>3 は関係ありません。
というかやってダメだったから聞いたわけで。
原因は別の所でした。解決しました。
ここではなるべく具体的な方法は書かないのが流儀みたいなので解決方法は省きます。
同じような事で詰まった人がいたら苦労して下さい(笑
クラス名もまともに書けない奴が正しく使えてる訳が無いもんな。
やってダメだったなら最初にそう言いましょう やったと断らなければやってないと思われるのはここに限らずどこのスレでも同じことです
>>796 どこのスレでも解決方法は省かないのが流儀ですので、その流儀に沿って省かずに書いてください
みんな親切すぎわろうた
QWebView継承してsignal作ろうとしたらコンパイルエラー Qtがんばれ
お前ががんばれ、いやがんばらなくていい何もかも
とりあえずqmakeだな 経験則的に
プロジェクトファイルの QT+=に webkit を書いてないとか? ははははは
Designerで DockWidgetの中にVerticalLayoutとか入れてみても、 Layoutのサイズがずっと固定のままになるのって何で? ウィジェットのサイズをdockWidgetのウィンドウの大きさに合わせて変えたり、 dockWidgetのウィンドウが小さくて表示しきれないときは スクロールバー出したりしたいのだけども
マニュアルくらい読みなさい
何でヘルプを確認しないんだよ?
確認はするが、その前に2ちゃんねるに書き込んでおけば 調べるよりも先に答えが出てるかもしれんじゃん。 どちらが効率的かは言うまでも無い。
それって自分で答えを見つけられないこと前提だよね
second opinion ってことだよ言わせんな
second opinion も調べた方が自分で答えを見つけるより「効率的」なの?
言うまでも無い。
言うまでも無く「効率的」とは言わないね
たとえば「簡潔に教えてくれ Qtってなに?」 って質問はネットで調べるより ここで教えてくれる奴を待った方が楽だろうな
いや、教えてくれる奴を待つより
>>1 読む方が楽だし効率的だな
>>1 読んでも理解できませんって人には楽かもしれんけど、それでも"効率的"ではない
ほら、そういって教えてくれるじゃん
>>1 に書いてるなんて知らんかったし
「
>>1 読んでも理解できませんって人」には「
>>1 に書いてあることすら知らん人」も含まれてんだろ
つまりお前は馬鹿だから質問した方が楽だっただけで、普通の人は質問するより
>>1 読んだ方が楽
どういう理屈で「馬鹿」が出て来るんだ?
むしろ
>>819 が馬鹿だろ
それが分からないから馬鹿なんだろ
顔真っ赤だぞ
なんなの?この低レベルな展開?
馬鹿に構うからこうなる
826 :
デフォルトの名無しさん :2010/12/03(金) 16:04:29
そろそろ、漢字ひらがな境界を単語区切りとみなして単語単位移動する簡単な方法が あるのかどうかを教えていただけないでしょうか? 誰も答えてくれないということは、簡単な方法は無いということでおk?
WindowsだとMircrosft Officeとかの一部のソフトが対応してるだけで、一般的なテキストエディットにそういう機能は無い そして残念ながらQtにはその追加機能は無いので、通常通りソフト側で対応しないとダメ
>>826 QTextBoundaryFinder というクラスがあって、これを使って単語境界を取得することが可能。
このクラスは Unicode の定義を元に harfbuzz というライブラリを使って作成されているが、
この定義が目的に合うならばこれが使える。
ttp://doc.qt.nokia.com/4.7/qtextboundaryfinder.html 確か、連続するひらがなをまとめて単語として扱ってくれなかったので
そういうのがだめならば自前で実装する必要がある。
# 表示用と編集用で定義がひとつだから駄目なんだろうな。
# 表示で折り返し可能な場所を探すのに使っているクラスのはず…。
しかし漢字とひらがなを単語区切りとみなすって荒っぽい方法だな。 forward wordに対応する機能として無理矢理入れたんだろうが。 とはいっても一々形態素解析をやるわけにもいかないだろうし。
まあデフォルトの動作よりはマシじゃないかね
qtで書かれたコードを読みたいのですが、コメントが英語ばっかりですorz 国産でqtを使ったソフトありませんか?
>>831 ヘルプも英語なんだから、英語の勉強しろ
二次元描画ってQcanvasとか使えばいいんだろうけど Qt CreaterからVC++っぽく貼りつけたりとかできないの?
できる
どうやるのか教えてくれエロい人
836 :
デフォルトの名無しさん :2010/12/04(土) 20:23:42
837 :
デフォルトの名無しさん :2010/12/04(土) 20:27:44
>>833 QCanvasはQt3のものなのでもう使われない。Graphics Viewを使えばよい。
838 :
デフォルトの名無しさん :2010/12/04(土) 20:28:41
839 :
831 :2010/12/04(土) 20:35:44
>>836 英語は苦手だから、日本語のコメントを読みたい
ある程度、日本語で情報を得てから英語を読んだほうが解りやすい気がする
例えば「qt c++」で検索してみろ
QCanvas って QRi のことだよな
SRAからサポート買えば英語避けられるんじゃないか LGPL版なら月給一ヶ月分くらいでやってもらえるぞ
デスクトップ版で206,850円か。 でも、わかんないところが聞けるのであって、英語回避とは違うような希ガスw
845 :
デフォルトの名無しさん :2010/12/04(土) 22:00:42
>>839 ソフトウェアに関わるなら趣味でも英語は必須だよ。英語を覚えるために時間を使って投資をするのが手っ取り早いよ。
まあ、英語圏のやり方は、その国々の存在自体を含めて潰れて欲しいと思うけれどね。
846 :
デフォルトの名無しさん :2010/12/04(土) 22:01:27
847 :
デフォルトの名無しさん :2010/12/04(土) 22:06:46
>>844 この時代に生まれたことを恨もう。たまたま英語を話す連中が力で世界を牛耳っているだけ。
英語なんてただの道具で品性もない下劣な言語だ。
むしろ日本語を廃止したい 母国語から変えねば米英に対抗できない
世の流れは完全に中国なんだが
>>848 毛沢東が似たようなこと考えたみたいだけど
彼は馬鹿で無能だったという定説
そうすると、志賀直哉も馬鹿で無能か いや別に否定はしないが
戦争直後日本でも日本語廃止は議論されていたよ
母国語の廃止なんてしたら数世代は社会が停滞するよ @過去の遺産にアクセスできなくなる A世代間でコミュニケーション不全発生 Bそもそも完全ネイティブになどなれない(英語圏を見れば明白) C学校の授業も外国語、理解できなければドロップアウト(英語で授業してる途上国見れば明白) 必要な情報の多くが翻訳されるおかげで母国語でさほど不自由しない日本は素晴らしい国だと思うよ (とはいえ、プログラミングするなら英語必須なのはどうしようもないが)
まあ過去の遺産なんか日本にはたいしてないけどなw 和とじの本なんか読めなくてもべつに重要なことなんか書いてない むしろ封建時代のしがらみがなくなっていいこと尽くめ
非国民かよ 過去の遺産は腐るほどあるだろ
非国民w60年ぶりに聞いたな 日本に限らずどの国も暗い歴史を引きずっている 弾圧され搾取された民衆レベルでは国境は足かせ以外の何物でもなかった 日本だけがそうだとは言わないし、日本が他の文化圏より劣っているわけではないけれど 民衆レベルでは自国にそうこだわりを持っている人間はいないのさ 明日の糧をくれる者こそが神様であり、自国がそれをしてくれないなら敵にさえなるってことだ
占領時代に旧字旧仮名廃止して常用漢字も死ぬ程削ってついでに焚書も少々した結果、 事実上現代日本人は一部インテリと好事家を除いて敗戦以前の日本から遮断されている 特に明治期の文献を読める人間なんて果たしてどれだけいるのやら まあだからこそ、昔自分達が何を考え何をしたかも分からなくなっていて、 中韓や米帝のいうまま下僕にされてそれに疑問すら感じなくなってしまっているわけだが
ところで、なぜQtConcurrentはQConcurrentじゃなくてQtConcurrentなの?
ライブラリもQt〜だし、命名規則についてあんまり深く考えてない希ガス
Namespacesだからじゃね?
>>854 過去の遺産って別に和とじとかの大昔の話だけじゃないんだけども……
今この瞬間にまで日本語で蓄積されたもの全てが、母国語が廃止された瞬間に過去の遺産になるわけでして
>>861 英語に翻訳すれば解決!
まあ、元ネタの英語文献がどこかにあるはずなんだけどね・・・
日本の過去の遺産の話はスレ違いだ。よそでやれ。
明らかに流れを読み違えてる
Qt conference Tokyo と MeeGo Seminar Winter 2010 に行く奴いる?
学生で参加したら浮くかなー
Qt conference Tokyo 行くけど、なにか?
関西でもセミナーやってほしいな
ホットキーを実現したいのですが、他のアプリにフォーカスがある時にキー入力を受け取るにはどうすればいいんでしょうか
872 :
デフォルトの名無しさん :2010/12/06(月) 20:19:57
>>871 組込みLinux用Qtならホットキー使えます。デスクトップは、ウィンドウマネージャの機能を使う必要があるんじゃないですか。
873 :
871 :2010/12/06(月) 20:42:49
すいませんWindows環境での使用を想定しています
GlobalHook呼べば
>>13 2chにあるソースでよくコメント行にマルシーとかcopyrightとか書いてありますがどうなるのですか
>>853 日本は古くからいろんな国の本が翻訳されて、それがちゃんと残ってるから
研究者とか日本語できるとわりと便利らしいね。
878 :
デフォルトの名無しさん :2010/12/07(火) 18:59:08
>>875 著作権があるので、守らなければ法的に罰せられるということです。
画面が大きく左ウィジット、メインウィジット、右ウィジットの3つに分かれてます。 このウィジット間で通信する場合、直接ポインターを介して関数を呼ぶのが良いか、 シグナル&スロットを使うのが良いか、どちらでしょうか?
俺だったら signal/slot で実装して、それで問題があるなら考える
881 :
879 :2010/12/09(木) 16:51:07
シグナル&スロットで書き換えてみました。 気のせいかわかりやすくなったような気がします!! 結構connectの数が多く油断すると、どのウィジットとどのウィジットがつながっているか わからなくなりそうですが、しばらくこれでやってみます。
882 :
デフォルトの名無しさん :2010/12/09(木) 18:01:52
signal/slot なら Qt Creator で結構簡単に繋げて つながりは矢印で見えて便利だと思うけど
883 :
879 :2010/12/09(木) 20:08:29
男は黙ってemacs
QObject::blockSignalsってカウンタ使ってないんだな なんでだろ
>>883 俺も普段 coding は emacs 使うんだけどQt 関係は QtCreator だな
よくできてる
SIGNAL() SLOT() の補完のできの良さに乾杯。 あれだけでご飯3杯はいける。
[Go to Slot]で作成されたヤツだけじゃなく、自分で書いたslot関数までヘッダーファイル から拾って補完リストに出してくれるところが凄いな。まぁ仕組みを考えれば当たり前 なんだけど。
889 :
879 :2010/12/10(金) 00:48:36
騙されないぞ(`・ω・´)
>>884 QWidget::setUpdateEnabledもカウンタ導入してもらいたいもんだな
showしたときにウィンドウをアクティブにすることなく表示したいのですが、いい方法教えてください showする前にアクティブなウィンドウを取得しておいて、showした後に再設定する方法で実装してみたのですが、 これだと一瞬アクティブになってしまうことがあるようです まったくアクティブにすることなくshowしたいのですが・・・
Qt Creater+VS2008でアプリづくりの勉強を始めてます。 Javascript+XMLでUI、内部演算やってるCalculatorサンプル、大変良くできてるんだけど、 Javascriptだとモジュール分けの仕組みがないからスケールアウトしないよね? Pythonに差し替えたらどんな感じになるのか挑戦中……。
今日、Qt Conferenceだったのに話題にもなってないのな。 Qt Quickはなかなか楽しそうやね。
Qt Conference 行ってきたよ Qt Quickは簡単に使え、コード量も減ってなかなかよさそうだった プレゼンツールQMLだったみだいだ
895 :
デフォルトの名無しさん :2010/12/11(土) 01:18:13
Qt Quickは携帯向けに小物なものを手軽に作るのにはいい。しかし、CADや制御装置などにまったく向かない。 Qt Quickを使っても下回りには、Qt/C++は常に必要で、用途によって使い分けるべきもの。
質問です。signalで大量のQString(List)をslotに送り込むのは 普通ですか。
普通
PySideってNokiaが開発してるんだね 有志が立ち上げたPyQtのクローンだと思ってた Qt Creatorを使ってpythonで開発できるようにして欲しいな
899 :
733 :2010/12/11(土) 16:06:52
Qtマニュアルの内容は出来るようになりました!! ありがとうごさいました
900 :
デフォルトの名無しさん :2010/12/11(土) 19:29:51
>>898 PySideは、PyQtのLGPL版を出そうとしないので、Nokiaが立ち上げたQtのPythonバインディング。
Qt::WA_TransparentForMouseEventsとかでググれ
あとはこれ setFocusPolicy(Qt::NoFocus)
みんなイケメンすぎ
907 :
901 :2010/12/11(土) 20:32:14
WindowsXPでQtを利用しています QtはGUIにキャッシュを使用しているようですが、これを無効化するかキャッシュサイズを制限することはできますか? QtCreatorも使い続けると必要な分の10倍以上のキャッシュを確保するので、折角の性能が無駄になってる気がします
いつも疑問に思っていたのですが、 @#include <QtGui> or A#include <QMainWindow> #include <QLabel> ・・・・ のどちらを使っていますか? ちょっと気になりますた
910 :
デフォルトの名無しさん :2010/12/11(土) 22:06:16
Qt Conferenceに出席して抽選会で2等が当たったよ 技術検定っぽい奴の無料受講権のようだ 今から勉強しなければ。。。 ちなみに豪華な弁当が出ました 申し込んで来なかった奴や午前中で帰った奴は次回からは気を使って欲しいね
なんで俺が気を使ってやらなきゃならんのだ? 馬鹿か
なんかハメられてないか?
>>909 無駄なものインクルードするのはなんか気持ち悪いので2
1だと使うつもりのないクラスまで補完されるからな。 ある程度設計が固まってるときは2。 いろいろ試しているときは変更が面倒なので1。
>>909 #include <QtCore>
#include <QtApplication>
#include <QMainWindow>
#include <QLabel>
918 :
デフォルトの名無しさん :2010/12/12(日) 02:06:20
>>909 プリコンパイルドヘッダーを使うときには1、そうでないときには2。
919 :
デフォルトの名無しさん :2010/12/12(日) 08:22:37
>>914 無理なんですか
今後修正されるといいですね
>>920 ただキャッシュを多めにとってるだけで速度低下になってるとはちと考えづらいな。
なにか比較できるようなサンプル作って測定したの?
メモリ浪費による速度低下じゃなくて、単純にメモリ浪費自体を問題視してるんじゃない? 速度よりメモリ使用量を重視するって選択肢が欲しい、と
キャッシュって、他のアプリでメモリが必要になっても開放されないの?
全く議論についていけなくて恐縮だが、QtのGUIのキャッシュってどういうこと? なぜそんなものが必要になってくるの?
キャッシュですか、カードですか?と聞かれ 「キャッシュで」と言いながらキャッシュカードを出してしまった そんな時に必要になってくる
QtがキャッシュしてるんじゃなくてWindowsがやってるのを勘違いしてるんじゃないかな 大抵のソフトはウィンドウ最小化して元に戻すとタスクマネージャの"メモリ使用量"は減るんだけど、その話?
QtはWidget同士のレイアウト管理がよく解らん。 QFormLayout/QVBoxLayout/QGridLayoutを組み合わせてWidget同士の親子関係は定義できたんだけど、 QMainWindow直下のレイアウトを常にFill表示する方法がよくわからない。 uiファイル中で指定する方法か、 なにかいいドキュメントはないだろうか。
クラスリファレンスも読めないなら大人しくQt Creator使っとけ
>>928 Qt Creater使ってるんだけど分からないのよー。
.NETのFormsはレイアウトに関しては単純か強くできてたんだけど……。
geometry
sizePlicy
minimumSize/maximamSize
sizeIncrement
baseSize
と、色々とあるが、どれを変更してもMainWindowに追随して大きさが変わってくれないように見える。
>>929 Qt Creatorのデザイナ画面で,左の方のウィジットボックス(フォーム上に貼り付けるウィジットが並んでる
ところ)からVertical LayoutやHorizontal Layout等を持ってきてフォーム上に貼り付けてない?
実はそのやり方は必要なくて,単純にレイアウトしたい部品を複数選択して,上のツールボックスにある
レイアウト系のボタン(ツールチップヘルプを見ればわかる)を押して「レイアウトを割り当てる」操作を
するだけでいい。
で,ここからが重要なんだけど,最後にフォームの中味をレイアウトしたい時は,フォーム自体を
クリックして選択しておいて,上の「レイアウトを割り当てる」操作をすればOK。
QGorupBoxやQFrameなど,ウィジットボックス内で[Containers]のカテゴリ内に並べた部品を
レイアウトする時も同じ(QGorupBoxやQFrame自体を選択しておいてレイアウトを割り当てればいい)。
ウチの社内でも,Qt Creatorを使い始める人にはこの話をしておかないと,大抵勘違いする。
とりあえず小さなフォームにボタンを二つ縦に並べてからフォームを選択状態にしておいて,
上のツールボックスの[垂直に並べる]ボタンを押してみればわかると思う。
その状態で,Ctrl+Alt+Rでプレビューしてフォームのサイズを変えてごらん。
たとえば GridLayout ならば GridLayout の中で並べて さらに window 全体の中でもう一度(水平でも縦でも)レイアウトするよ こんな答えでよいのかしら… 意外と手頃な document 無いんだよね
× QGorupBox ○ QGroupBox タイポスマソ
933 :
930 :2010/12/13(月) 17:20:02
言葉だけの説明だとわかりにくいと思うから,ヘルプの[Using Layouts in Qt Designer]を 見てみて。
QMainWindow main; QWidget *central = new QWidget; QVBoxLayout *layout = new QVBoxLayout; QLabel *label = new QLabel(tr("aiueo")); layout->addWidget(label); central->setLayout(layout); main.setCentralWidget(central); これだけの事なのになぜdesignerはあんなに初見殺しなのか。
935 :
930 :2010/12/13(月) 18:06:54
>>934 ひとえにウィジットボックスにレイアウト系の部品が並んでるのがいけないと思う。
あれの実体はsetLayout済のQWidgetなんだけど,何のためにあるのかな?
初期に勘違いしてた頃を除いて使ったことないんだが。
直感的には,あれをフォームの上に貼って,その中にボタンなどのウィジットを並べれば
良いと思ってしまう人が多いんじゃないかな。
あれさえなければ勘違いすることも無いと思うんだよね。
不便なだけで出来ることに変わりはないから別に勘違いではない とりあえずとっつき易いとこから初めて、ツールボックスやコンテキストメニューにレイアウト系の項目があることに気付いた時点で改めて考えればいい キーボードショートカットやマウスジェスチャーは便利だが、だからと言ってメニューを廃止する訳にはいかないだろう
937 :
デフォルトの名無しさん :2010/12/13(月) 18:49:49
QTのBOOS_FOREAChってどれ?
>>930-935 ありがとう! なんとなく分かった気がする。
言われたとおりの操作をしばらく試してみた。
# レイアウトWidgetを先におかずに
# 通常Widgetを裸で配置してから、ウィジェットを選択せずに再配置ボタンを押す
どうやら、レイアウトWidgetを裸で入れ子にすると、意図した動作になってくれなくなるようだ。
左側に縦に並べて右側全体にコンテンツを表示する
Visual Studioっぽい配置を目指してたんだけど、
QMainWindow
centralwidget : QWidget
splitter : QSplitter
frame : QFrame
QPushButton
QLineEdit
QListWidget
mainWidget : QLabel
statusbar
menubar
このような配置で、意図する動作(左側は縦にのみ拡大、右側は下、右に拡大)ができるようになった!
どうもありがとう!
今はmainWidget->pixmapに入れた画像をアスペクト比保存で最大化表示させようとしてうまくいってないんだけど、
サンプルソースでQLabelを使わずにQWidgetから派生してpaintEvent()を自分でやる例があったのでなんとかなりそうだ。
http://qtprogramming.s2.zmx.jp/Qt4Examples/Pixmap.html
QtCreatorのキーワードとか型って追加できますか? qrealとかも着色されるようにしたいのですが
>>936 > 不便なだけで出来ることに変わりはないから別に勘違いではない
いや、トップレベルレイアウトをフォームやコンテナウィジットに適用するのは、
レイアウトウィジットを置いてもできない。
>>930 はそこのところを言いたいんだと
思うよ。
俺も最初はレイアウトウィジットを置いてから、その中にボタンなどを放り込んで
変だな?と思ってた。
>>930 通りすがりですが、今まで疑問に思っていたことがわかりました。
イケメンさん、ありがとう!
正直sizePolicyとかbaseSizeとかsizeIncrementとかの レイアウト関連と思われるプロパティのつながりがさっぱりわからない
>>943 それはドキュメント読めとしか。
Layout系クラスに丸投げしないで自分でサイズ管理する時に使う物だよ。
逆に言うとLayout系クラスに丸投げして済むなら触る必要は無い。
なんだよね プロパティ調整をしないとダメなんじゃないかと思っちゃうところが取っつきにくいかも 自動でできるわけで、どうしてもそれに不満がある場合のみに調べれば良いんだけど
946 :
デフォルトの名無しさん :2010/12/14(火) 10:34:50
>>943 sizePolicyはウィジェットサイズ変更のヒントをレイアウト機能に伝えて、レイアウト機能にサイズ管理してもらうためのもの。
baseSizeとsizeIncrementは、レイアウト機能には関係なく、ウィンドウマネージャへのヒント。
baseSizeはウィンドウサイズのリサイズ時のベースサイズで、sizeIncrementはリサイズステップ。
947 :
デフォルトの名無しさん :2010/12/14(火) 12:10:40
>>942 デザイナは、コードでレイアウトが書けるようになって、さらに楽をするためのツール。
だから、説明は少ない。
QLabelに画像を入れて適切なサイズで表示させようとしている。 最初はフルサイズになるかアスペクト比無視でウィンドウサイズ表示になるかで使いにくかったんだけど、 QScrollAreaに入れることで、フルサイズでもスクロールできるようになった。 (これまではウィンドウサイズが無理やり拡大されていた) サイズを変更できるようにするためsizeHint(), minimumSizeHint()をオーバーライドして 画像の表示したい倍率を掛けて返すようにしたら縮小できるようになったんだけど、これであってる? これで初期表示はできるようになったんだけど、表示後に倍率を変更したいときに 何のイベントを送ればいいのか調査中。QResizeEventでいいんだろうか。
>>947 Qtが普及してきた理由の一つにRADツールとしてQt Creatorが登場した事があげられるだろう。
今時、手書きコードを意識してツールを使う人は少ないはず。
手書きコードは、必要になったときに調べる能力があれば充分。まぁ、ui_xxxxx.hの中味くらい
覗いておく方が良いとは思うが。
そもそも今回「説明が少ない」のはQt Creator/Designerのレイアウト操作の使い方に関する
話であって、手書きコードとは関係ない。
一言どうしても言いたかったんだろうが、的外れ。
950 :
デフォルトの名無しさん :2010/12/14(火) 12:57:50
>>949 手書きコードが書けなれば、ちゃんとしたレイアウトはできない。
レイアウトのコードを書ければ、Qt Creator/Designerのレイアウト操作は分かる。
レイアウトの操作の説明は、Qt Creator/Designerには必要ない。
QTreeViewを継承したクラスででアイテムのドラッグ&ドロップにをしたとき ドロップしたアイテムが選択されるようにするにはどうするのがいいでしょうか? どこにドロップしたかの情報をどう得るのかが分かりません D&D開始時に選択されていたQModelIndexとか保存すればいいのかと思っていましたが、 それはQModelIndexの仕様を勘違いしていただけでそれじゃできないと分かってどうしたらいいのか分からなくなりました
952 :
デフォルトの名無しさん :2010/12/14(火) 13:24:52
>>948 > サイズを変更できるようにするためsizeHint(), minimumSizeHint()をオーバーライドして
> 画像の表示したい倍率を掛けて返すようにしたら縮小できるようになったんだけど、これであってる?
アスペクト比は変わるけれどあっている。
イベントではなくresize()。QResizeEventは事後イベントで、リサイズ後に送られます。
953 :
948 :2010/12/14(火) 13:27:45
明示的なリサイズ指示の発行だけど、 QResizeEventを与えてみたが効果がなかった。 sizePolicyを変更することで表示倍率が切り替わることは確認したけど、リサイズが2回行われるからちと不便。 setVisible(false);setVisible(true);と2回続けて呼び出すことで解決した。 ところで、Qt CreaterでQStatusBarにウィジェットってどうやったら追加できるんだろう?
>>952 >イベントではなくresize()
あ、すごい簡潔。それでいかせてもらいます。
>>950 > レイアウトのコードを書ければ、Qt Creator/Designerのレイアウト操作は分かる。
わからないよ。ツールバーやコンテキストメニューからレイアウトを適用する操作が
探しにくいんだから。ウィジットボックスからレイアウトウィジットを貼って、「何か変だな」
ってなる。
956 :
デフォルトの名無しさん :2010/12/14(火) 13:54:03
>>951 >どこにドロップしたかの情報をどう得るのかが分かりません
dropMimeData()の再実装で。
957 :
デフォルトの名無しさん :2010/12/14(火) 13:58:06
>>953 >>ところで、Qt CreaterでQStatusBarにウィジェットってどうやったら追加できるんだろう?
addWidget()やinsertWidget()では?
958 :
デフォルトの名無しさん :2010/12/14(火) 14:01:54
>>955 初めてデザイナ使って迷いがなかったのはコードでレイアウトが書けたからだと思う。
そして、デザイナで操作にこだわってレイアウトが分からないような人には、コードを理解させればデザイナを使えるようになった。
> Qt CreaterでQStatusBarにウィジェットってどうやったら追加できるんだろう? statusBar()->addWidget(widget); ってコードを手で書いた方が簡単明瞭な気がする
>>958 ふうん、余程勘のいい人々なんだね。それはよかった。
俺なんかコード書けてもQt Creatorのレイアウト操作はわかなかったぞ。頭悪いからw
低脳自慢は他でやれよ。
確かに頭悪そうな文章だ
>>956 ありがとうございます
そのあたりを読んでみたら確かにこれならなんとかなりそうです
ヘルプを探してはいたのですが、思いっきり間違った方へ読み進んでいたようです
とても助かりました
QStatusBarで子Widgetを右寄せにする方法がわからない……。 というか、Qt Createrでなぜデザインできんのじゃー!
あれ、すっごく基本的な話なんだけど、 Qt + vs2008で日本語ってどうやって扱うの? そのまま表示させたらエスケープされてしまった。
>>965 自己レス。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
>>964 試してないけど・・・
右寄せなんだから、QHBoxLayout を作って、
左にスペーサを入れたらダメ?
968 :
デフォルトの名無しさん :2010/12/14(火) 15:54:15
困った時は右クリックが基本の俺に死角はなかった むしろそれを試さないマの気がしれない
QPushButtonを大量に自動生成するときに、 押されたときのイベントハンドラを1箇所にまとめようとしています。 どのボタンが押されてボタンに関連付けられているのかが 簡単に分かるようなコーディング方法って何かありますでしょうか? 例: QMap<QLabel*, int> indis_of_labels; を用意しておいてハンドラに渡ってきたQLabel*から逆引きする
俺も初めの頃はできる限りQtDesigner を駆使しようとして 色々わからんこと多くて試行錯誤したなぁ coding の仕方は色々書いてあるしサンプル見ればわかるけど Qt Designer の方はイマイチわかりやすくまとまったものが無い ある程度使うとよくできていると感じるんだが…
>>970 sender() でシグナルを発行したオブジェクトを参照するってのは?
QtDesignerの[Form]-[view code]で生成されるC++のコードを確認しながら 作業すると、今の変更が実際にどのようなコードに置き換えられるのか参考 になるのでおすすめ。 Widget等をQtDesignerでレイアウトした後、この[view code]のソースをコピペして、 *.uiは使わずに、好きなようにソース上でカスタマイズするという手もある。
>>970 setObjectNameして各ボタンに識別子を付ける。
スロットでシグナル受け取ったらsender()して送り主をQObject*で取得してobjectNameして判別。
>>970 QAbstractButton派生ものなら、QButtonGroupを使って管理するのがお勧め。
QButtonGroup::addButton( QAbstractButton * button, int id ) でID付きで登録して、
押されたときは
QButtonGroup::buttonClicked ( QAbstractButton * button )
QButtonGroup::buttonClicked ( int id )
のどちらかの signal を使えばイベント拾えます。
排他処理もこいつが自動的に管理してくれるし、QtCreator でも登録・削除・グループ作成
できるのでいいですよん。
>>976 QRealは知らんが、ユーザー定義のWidgetは簡単に追加される。
というか普通にプロジェクト作ったら最初から追加されてる。
uiファイルをテキストエディタで開いてよく見てみよう。
着色っつってるしQt Creatorのテキストエディタがキーワードとか型として認識する文字列を編集したいってことじゃないか
>>977 プロジェクトに追加じゃなくて、QtCreatorがキーワードとか型とみなすようにしたいんです
要はintとqrealがQtCreator上で同じ色で表示されるようにしたいんです
すいませんリロードしてませんでした
>>978 さんのおっしゃる通りです
ん?qrealはちゃんと着色されとるけど…。intのようなC++キーワード扱いではなく型扱いではあるが。
982 :
981 :2010/12/14(火) 21:32:37
よくわからんが、QtCreatorのツール→オプション→テキストエディタ→標準ハイライト→定義をダウンロード を選択して、C++辺りをインストールしてみてはどうかの?
>>982 それ、2.1からの機能。
2.1だとハイライトの定義を編集できる。
WinXPだがうちのQtCreator(2.0.1)のテキストエディタのページに標準ハイライトなんて項目無いぜ
985 :
981 :2010/12/14(火) 21:43:30
>>983 あ、うちのは 2.1.0 beta-2 だた。
>>984 そいつはシラなんだ、すまぬ。
>>980 てことで、2.1.0 beta 入れてみてはどうかの?
2.1RC出てるのにBetaかよw
>>981-985 さっそく2.1を入れてみました
ユーザが定義した型も自動で追加してくれるんですね
これは便利です。ありがとうございました
988 :
981 :2010/12/14(火) 22:00:00
>>986 おぉ、サンクス。頂戴した。
>>987 着色されてない理由がたぶんわかたよ。プロジェクト→概要→Qt バージョン
が適切な設定になっているかどうか確認するよろし。qmake のパスがちゃんと
指定できていないと、qreal が着色されないお。
って解決したのかおwww
一番いい次スレを頼む。
一番いい次スレをありがとう。 ところで、QtWebkit の Webkitバージョンってどうやって見るんでしょうか。 ヘルプには「バージョン情報は、src/3rdparty/webkit/VERSION を見ろ」って書いてあるけど、 gitリポジトリとsha1ハッシュ値しか書いてない…。
991 :
デフォルトの名無しさん :2010/12/15(水) 14:34:45
買った本がQtをコマンドプロンプトでコンパイルする方法の本なんだけど、 Windowsの場合、絶対、MinGWというのをいれなきゃいかんのですか? ネットで調べてみたけど、情報が錯綜しててよくわかりません。 よろしくです。
VCでも逝けるらしいけどVC2010で上手くいった話はまだよくわからない Qtの勉強だけが目的なら面倒のないMinGW入れた方が結果的に楽だと思う
993 :
デフォルトの名無しさん :2010/12/15(水) 14:51:20
Viisual Studio 2008は必要ないんですか?それとも必要なんですか?
必要かもしれないし、必要でないかもしれない
996 :
993 :2010/12/15(水) 15:28:04
>>994 MinGW使わないならVS2008は必要だけど,代わりにMS SDKも使えるということ。
997 :
993 :2010/12/15(水) 15:49:24
補足すると,本家MinGW(Qt SDKに同梱されているのもこれ)はコンパイル時にソースの エンコーディングを指定してもShift_JISのソースコードは通らないはず。従って日本語を含む 場合はソースをUTF-8で書かなければならない。コメントだけだったら問題なかったと思うけど, 日本語の文字列リテラルがある場合は引っ掛かる。 1年位前の話だから今は違うかもしれない。 ちなみにTDM's MinGWならShift_JISも通せるけど,この場合はQtをソースからビルドする 必要がある。これは実際にやってみたから確実。話をややこしくしてスマソ。 結局,日本語を含むShift_JISのソースコードを通したければVS2008を使うのが良いが, お金を払いたくなければMS SDKでもよいと言う話。UTF-8でよければMinGWを使えば いいでしょう。
金?
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。