[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 08/22 15:13 / Filesize : 182 KB / Number-of Response : 632
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【GUIツールキット】Qt 総合スレ 4【Win/Mac/Linux】



1 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 04:29:47 ]
Qt(キュート)は C++ ベースの GUI ライブラリです。
フォーム、ボタンなどの各種ウィジェットからネットワーク、マルチスレッド、グラフィックス(OpenGL)や
各種コンテナ、XMLパーサー、組み込み JavaScript など、ライブラリの機能は多岐に渡ります。
また、「Qt Creator」という GUI ビルダ付きの専用 IDE が用意されています。

■対応プラットフォーム(デスクトップ用途の場合)

Windows 98, Me, NT4, XP, Server2003, Vista
Mac OS X 10.3, 10.4, 10.5
Linux

■ライセンス

・オープンソース版(Open-source version)
 LGPL 2.1 または GPL 3.0 のうちどちらかを利用者が選べます。
 LGPL を選んだ場合は商用利用が可能です(いくつか制限あり)。

・商用版(Commercial version)
 こっちはQt Softwareか日本の代理店(SRA社)とライセンス契約(年間30万くらい?)を結んで使います

■Qt を使って作られたソフト例

KDE、Adobe Photoshop Elements、Google Earth、Skype、DAZ Studio など

■前スレ

[KDE/Qt]Qtについての疑問を教えあうスレ 3
pc11.2ch.net/test/read.cgi/tech/1194158506/


2 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 04:30:12 ]
■リンク

・Qt Software (旧Trolltech社/現在はNokia社の一部門)
www.qtsoftware.com/

・Qt のダウンロードページ(オープンソース版は、LGPL/Free Downloads タブから)
www.qtsoftware.com/downloads

・Qt のダウンロード(FTP)
ftp://ftp.qtsoftware.com/qt/source/

・SRA社(日本の代理店)の日本語で読める Qt 関連ドキュメント
www.sra.co.jp/qt/relation/index.html


■ライセンス関連まとめ

各ライセンスでの自作アプリのソース公開/頒布

Qtのライセンス   アプリのライセンス     Qtの頒布/(変更部分のソース公開)
GPL           GPL(ソース公開必須)      必須
LGPL         任意(ソース公開不要)      必須
商用          任意(ソース公開不要)      不要

*: LGPLは動的リンク時

実際には他にも条件(リバースエンジニアリング関係とか)あるので、
きちんとライセンスの条文を読むこと。


3 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 04:30:29 ]
Windows ユーザー向け Tips

■どれをダウンロードするの?

・Download Qt SDK for Windows* (194 Mb)
  IDE&コンパイラ付きインストーラー(Qt Creator&MinGW)
  すぐに使える。オススメ

・Download Qt libraries 4.5 for Windows (136 Mb)
  MinGW(gcc)版インストーラーや、その他のコンパイラ(VisualC++など)用のソースコード
  VisualC++等でQtを使うには、これを落として Qt 自体をビルドする必要がある(2〜3時間かかる)

■Qt Creator&MinGW Windows版について

・プロジェクトのパスに半角スペース、日本語を入れちゃダメ
・日本語のソースコードは UTF-8 にする
 「Projects」タブの「Editor Setting」設定でエディタの Encoding を「UTF-8」にする
 デフォルトの System(ShiftJIS)は gcc と相性が悪い
・デバッグ出力はとりあえず英語にする
 qDebug() に日本語を出力するとデバッガコンソールが文字化けする(UTF-8、ShiftJISどっちもムリ)
・配布時は mingwm10.dll も忘れずに一緒に入れておく
 MinGW 環境でコンパイルするとこのDLLが必要になる。このファイルは public domain で配布上の制限はない

4 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 09:19:30 ]
>>1

5 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:15:22 ]
ねーねー、Qtアプリの多重起動禁止ってQtのAPI使ってできる??
QMutexじゃ無理なんだよね?

6 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:37:26 ]
>>1
うは、LGPLで使える様になったのか。NOKIAグッジョブb
今までGPL汚染が嫌で遠ざけていたけど、素晴らしいね。
そもそもGPLはライブラリのライセンスには不適格だから、
LGPL化は正常な方向への舵取りですね。
これでwxやGtk+に奪われた領土を少しは回復出来るかな?

7 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 11:47:16 ]
QSettingsで、キー内容にカンマ(,)をつけると値が取れなく
なるんですが、どうしてでしょう?マニュアルにもWebでもカンマに
ついて一言も書いてないです。


8 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 18:35:40 ]
>>7
カンマがセパレータとして認識されてるんじゃない?

9 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 00:49:52 ]
ははは

10 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 03:18:49 ]
>>8
うーん。セパレータと解釈されてそうですが、そういう設定ないんですよね。
QSize型を書き出すと@Size(100 100)とか出力される例がマニュアルにあって、それもカンマ
使わずにスペースで区切ってあるんですよね。どうもカンマを使えないのはNokiaも知ってるっぽい?です。
なんかこういう重要な事がマニュアルに書いてないのが
オープンソースあがりっぽい感じがして少しがっかりです。



11 名前:デフォルトの名無しさん [2009/04/20(月) 08:23:50 ]

>>10
環境は何ですか。
私の環境LinuxのQt4.5では、キーにカンマ(,)をつけても、
書き込み読み込みともにうまくいきました。
ただし、ファイルの中を見ると、カンマ(,)の部分は%2Cとなっています。
ASCIIの16進コードに置き換えられているようです。

12 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:15:20 ]
>>11
おお。WIndowsXPのQt4.5です。
すみません、読み込みは散々調べましたが、書き込みをやってませんでした。
いまやってみたら、
settings.setValue("TEST/KEY","0,1"); // KEY="0,1"
とダブルクォーテーションに包まれて出力されました。
この場合読み込みもうまくいきました。
Linuxと挙動がちがいますね。そちらではダブルクォーテーションになってませんか?

13 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:25:17 ]
>>11
ああ、なるほど、キーにカンマをつけた場合の話しですね。
私はキーの値にカンマをつけた場合の話しです。
キーにカンマをつけてみたら、同じく
settings.setValue("TEST/KE,Y","0,1");//KE%2CY="0,1"
%2Cとなりました。挙動は一緒みたいですね。

14 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:32:35 ]
>>11
誤るの遅くなりましたが、キー内容という表現が悪かったです。すみませんでした。

15 名前:デフォルトの名無しさん [2009/04/20(月) 17:36:26 ]
>>12
こちら(Linux)でも同じです。
settings.setValue("TEST/KE,Y","0,1");
とすると、ファイル内では、KE%2CY="0,1"となっています。

>>14
こちらこそ、勘違いしたみたいですね。やりたいことは、値として整数値の組をカンマで区切ったものを読み込ませたいということですね。
もしそうならば、下記のようにすればどうでしょう。

(ファイルの中)
TESTKEY=100,20,50

(サンプルコード)
#include <QDebug>
#include <QVariant>
#include <QList>

QVariant values = settings.value("TESTKEY", QVariant(QList<QVariant>()));
QList<QVariant> valueList = values.toList();
const int cSize = valueList.size();
int value;
for(int i = 0; i < cSize; ++i) {
value = valueList.at(i).toInt();
qDebug() << value;
}

(出力結果)
100
20
50



16 名前:デフォルトの名無しさん [2009/04/20(月) 19:15:02 ]
>>5

商用ライセンスならこれでできます。

Single Application ― Qt – A cross-platform application and UI framework
www.qtsoftware.com/products/appdev/add-on-products/catalog/4/Utilities/qtsingleapplication/

17 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 19:19:28 ]
>>15
おお、すばらしいです。
やりたいことが出来ました。
ですがちょっと納得いかないので調べてみます。
大変ありがとうございました。

18 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 21:15:53 ]
>>15
やっぱりちょっと問題があるようです。
QVariantのtoList()は、"0,1"の場合、要素数2のリストを作ってくれますが、
"0"のようにカンマが無い場合、要素数が0になってしまうようです。
要素の数でなく、カンマの数で要素数が決まる?ようです。
少々がっかりです。

↓もがっかりな点です。
QStringのtoInt()関数 int toInt ( bool * ok = 0, int base = 10 ) const
QVariantのtoInt関数 int toInt ( bool * ok = 0 ) const
同じ関数名なのに機能が統一されてない(´・ω・`)

たぶん、ほかにもいろいろとこういったものがあるのでしょうね(´・ω・`)。


19 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 21:42:39 ]
遅れたけど>>1モツ
随分様変わりしたな




それはそうと、Qtを引っさげてIT業界へ転職しようと考えてる
応用情報午後で不合格ほぼ確定なオレにゃ甘い考えだろうか

20 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 21:57:33 ]
>>19
いいやそんなことないぞ。がんばれ



21 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 00:17:00 ]
Visual Studio2008でコンパイルしたQT4.5使ってます。
qt-vs-addin-1.0.0-rc1.exeもインストールし、
ほぼ問題なく使えているのですが、
ウォッチウィンドウなどの表示で、
QMapのデータがerrorと表示され、内容が見れず困っています。
autoexp.datの設定には、QMapの内容が書かれているらしいのですが、
どうもよく分かりません。一部は括弧が対応していないところも見つけたので
ひょっとするとこのファイルがおかしいのではないかと思っています。
どなたか解決できてる方いらっしゃいますか?

22 名前:デフォルトの名無しさん [2009/04/21(火) 01:09:36 ]
>> 18

>QVariantのtoList()は、"0,1"の場合、要素数2のリストを作ってくれますが、
>"0"のようにカンマが無い場合、要素数が0になってしまうようです。
>要素の数でなく、カンマの数で要素数が決まる?ようです。

QVariant values = settings.value("TESTKEY", QVariant(QList<QVariant>()));
として、読み込んだ場合、値によって返ってくるvaluesの型が違ってくるように実装されているようです。

ファイルの値が
TESTKEY=10,20
のとき、valuesは、QVariant(QList<QString>())になっています。
このとき、リスとの各要素(QStringの中身)は、"10"と"20"になっています。

ファイルの値が
TESTKEY=10
のとき、valuesは、QVariant(QString())になっています。
このとき、QStringの中身は、"10"です。

ファイルの値が
TESTKEY=
となって値が設定されていない時、上と同じくvaluesは、QVariant(QString())になっています。
このとき、QStringの中身は、""です。

以上を踏まえて値をとるようにすればよいのではないでしょうか。

23 名前:デフォルトの名無しさん [2009/04/21(火) 01:10:51 ]
22の続き

(サンプルコード)
#include <QDebug>
#include <QVariant>
#include <QList>

QVariant values = settings.value("TESTKEY", QVariant(QList<QVariant>()));

if(values.type() == QVariant::StringList) {
QList<QVariant> valueList= values.toList();
const int cSize = valueList.size();
for(int i = 0; i < cSize; ++i) {
qDebug() << valueList.at(i).toInt();
}

} else if(values.type() == QVariant::String) {
QString string = values.toString();
if(!string.isEmpty()) {
qDebug() << string.toInt();
}
} else {
qDebug() << "here is else block"; // ここにはこないはず。
}



24 名前:デフォルトの名無しさん [2009/04/21(火) 07:52:19 ]
>>21
RC1 だから開発元に報告した方がよいのでは?



25 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 15:36:06 ]
>>22
丁寧に教えてくださって恐縮です。ありがとうございます。
QVariantは中に何が入っているか調べないと使えないのですね。
本当の意味のVariantじゃない気がする。。
TrollTeckはこの実装が完璧だという認識なのでしょうか。。




26 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 15:50:23 ]
>>24
へんてこ英語で一応報告してきました。

27 名前:デフォルトの名無しさん [2009/04/21(火) 16:31:19 ]
>>25
>QVariantは中に何が入っているか調べないと使えないのですね。
通常は、受取側がQVariantの中に何が入っているか分かっていることがほとんどでしょうからこれでも結構使えると思います。
ただ、今回の例では、settings.value()は常にQVariant::StringListを返すように実装してあるのがいいような気がします。

>本当の意味のVariantじゃない気がする。
>TrollTeckはこの実装が完璧だという認識なのでしょうか
確かに、もっと便利にできるでしょう。
将来に期待しましょう。


28 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 17:58:12 ]
QVariantにはtoBool()があるのに
QStringにはない(;´д⊂)

29 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 18:51:20 ]
要素が一つだけの QVariantList を作って QSettings でセーブした後で
読み出すと QVariant::toList() でちゃんと取り出せる。
その場合は "LIST=1" みたいな形ではファイルに残っていないけど。
元と違う形式で読み出そうとしてるからうまくいかないって感じだな。
なんでこんな仕様なのかはよくわからないけど。

ex.
QVariantList list;
list << 1;
settings.setValue( "LIST", list );

iniファイル
LIST=@Variant(\0\0\0\t\0\0\0\x1\0\0\0\x2\0\0\0\x1)

30 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 19:17:32 ]
QTを使ったプログラムで、ユーザ定義のクラスを作る場合、
クラスは基本QObjectを継承するのがいいのでしょうか?

QObjectを継承して、Q_OBJECTマクロを使っとけば、
connectとかtr()とかでC++の機能を拡張できる事と同等なので、
やっぱり全てのユーザクラスをそう作るのが基本になるのですよね?



31 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 13:11:03 ]
C#なら

labelTitle.ForeColor = Color.Black;

で終わるところが、C++ + QTだと

QPalette pal = ui.labelTitle->palette();
pal.setColor(QPalette::Normal, QPalette::WindowText, QColor(Qt::black);
ui.labelTitle->setPalette(pal);

と書かないといけない(;´д⊂)
これって、QTの改良でなんとかならないのかな。

32 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 15:19:34 ]
int i のiを文字列にする場合、
C#では、
string str = i.ToString();
で出来るけど、QTだと
QString str = QString::number(i); //static関数
もしくは、
QString str; str.setNum(i);
になる。
これをみて、最初、QTにはどうして同じ機能が二つ用意されてるのだろうと思ったが、
前者はstatic関数で、後者はメンバ関数だった。
ああ、なるほど、たしかにどちらも必要だな、と思った。
が、しかし。
どうしてこういうことがおきるか。
C++がオブジェクト指向言語であるにもかかわらず、
その基本になってるintなどの変数がオブジェクトになってないせいではないか。
それを徹底したのがC#。
でも、intなんか4バイト程度で済むのにオブジェクトなんかにしたら容量食うし、遅くてしょうがない。
やはり、C++QTがベストなのだろうか。
なんだろうこのジレンマ。(´・ω・`)

33 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 16:32:15 ]
QSplitterの棒の位置ってデザイナで指定できる?

34 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 17:39:27 ]
QTableWidgetItemには、
setBackgroundColor()
はあるのに
setForegroundColor()
がない(´・ω・`)
QTは抜けがいっぱい。

35 名前:デフォルトの名無しさん [2009/04/22(水) 19:00:35 ]
>>34
QTableWidgetItem には、setForeground() と setBackground() がある。

36 名前:デフォルトの名無しさん [2009/04/22(水) 19:03:13 ]
>>28
QVariant には bool を入れられるから toBool() がある。
QString には toBool() 値に対応すべき文字列がきっちりと決められないから toBool() がない。



37 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 22:21:16 ]
>>26
autoexp.datのバグが登録されました。
www.qtsoftware.com/developer/task-tracker/index_html?id=251887&method=entry
なんだかうれしい。

38 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 22:29:13 ]
>>35
QTableWidgetItemのsetBackgroundColor()はObsoleteとなってました。
代わりがsetForeground() と setBackground() ですね。

39 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 22:29:38 ]
>>32
> intなんか4バイト程度で済むのにオブジェクトなんかにしたら容量食うし、遅くてしょうがない。
COOLを勉強して、ソープで童貞卒業してから出直せや
ttp://www.sage-p.com/process/cool.htm

40 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 23:46:30 ]
QTでは、関数の引数でQTのオブジェクトを渡す時は
constの参照渡し、で int とかboolの時は値渡ししてるんだね。
それが速いんだろうな



41 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 00:30:59 ]
至極当たり前のことじゃ…(´・ω・`)

42 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 01:47:22 ]
そっか(´・ω・`)
関数の戻り値で参照返しの時と、値返しの時があったんだけど、

QStringクラスの例
 QString & setNum ( int n, int base = 10 )
 QString toLower () const

これってどういう場合にどっちを使うのかな?(´・ω・`)

43 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 10:24:35 ]
QString::setNum() は自分自身を書き換える。
すでに存在しているインスタンスを書き換えて返すので参照で返せる。

QString::toLower() は新たに文字列を作成して返す。
すでに存在しているインスタンスは変更せずに、新たにインスタンスを作成するので
参照ではなく値で返す。

44 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 11:30:35 ]
自分自身の参照を返すのって、いわゆるメソッドチェーンか
Named Parameter Idiomを意識してるのかな

新しく作って返すのは依存性を考えなくて楽だけど、C++ではコピーのコストがかかるので(ry

ポインタを返すのはcreate○○みたいないかにもファクトリメソッドにして、後で解放処理をすることを使い手に強いるか
shared_ptrみたいなスマートポインタをつかって(ry

45 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 11:39:02 ]
QWidgetの色ってpallete変えれなかったんだけど、
どうやって変えるのかな(´・ω・`)

46 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 11:55:37 ]
>>45
環境と使用した ColorRole は?

palette.setColor( QPalette::Window, Qt::red );
w.setPalette( palette );
で変えられるけど。

47 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:18:11 ]
>>43

QString & remove ( int position, int n )

の場合、

QString str = "ABC";
str.remove(0,1); //"BC"

と代入する必要はないけど、

QString toLower () const

の場合、

QString str = "ABC";
str = str.toLower();

と代入しないといけない。

これってちょっと覚えるのが難しいね。
代入しないといけないメンバ関数って何か共通点があるのかな(´・ω・`)


48 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:32:21 ]
>>46
WindowsXP SP3 + VisualStudio2008 + QT4.5(open source)
です

新規作成プロジェクトで
test::test(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);

QPalette palette = ui.centralWidget->palette();
palette.setColor(QPalette::Window, Qt::red);
ui.centralWidget->setPalette(palette);

}

とやっても赤くならない(;´д⊂)

49 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:47:09 ]
>>47
自分自身をインプレースで変えるメソッドと(QString::setNum: 戻り値の型はどうでもいい)
新しくインスタンスを作るメソッドの違いくらいわかろうぜ。(QString::toLower 戻り値の型がQString)
Qtじゃなくてもよく出てくるから。

戻り値の型がどうでもいいのにQString::setNumがQString &を返しているのは
自分自身の参照を返すといろいろ便利だから。
中ではreturn (*this)ってやってる。

インプレースのほうが効率がいいが、参照渡しとかで他のオブジェクトに渡すと中身を勝手に変えられる心配もある
新しくインスタンスを作ればその心配はなくなるが、ちと効率が悪い。

あと、C++は関数の評価順が未定義なので
関数の引数にインプレースで変更する処理を書くと変になる。
インスタンスを作ればそこら辺はもんだいない(たぶん)

たとえば
foo(str.remove(0,1), str) // NG
foo(str.toLower(), str) // たぶんOK

50 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:58:46 ]
>>48

ui.centralWidget->setAutoFillBackground( true );



51 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 13:34:54 ]
>>50
赤くなった(`・ω・´)
ありがとう。さすがだねぃ

52 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 18:57:42 ]
コンボボックスが複数あって、それぞれの変更シグナルを
一つのスロット関数で受ける場合、どのコンボボックスからのシグナルなのか
判断するには、connect以外の経由で情報を渡すか、QComboBoxの継承自作クラス
で新規にシグナルを定義するしかないよね?


53 名前:デフォルトの名無しさん [2009/04/23(木) 19:19:20 ]
>>52
QObject::sender()が使える?


54 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 20:09:56 ]
方法によっては QSignalMapper も使えるかも。

55 名前:デフォルトの名無しさん [2009/04/23(木) 20:38:46 ]
>>18

> QVariantのtoList()は、"0,1"の場合、要素数2のリストを作ってくれますが、

リストを作りませんよ。

> "0"のようにカンマが無い場合、要素数が0になってしまうようです。
> 要素の数でなく、カンマの数で要素数が決まる?ようです。

toList() は、List と StringList が対象で、"0, 1" という文字列は対象ではないです。

> ↓もがっかりな点です。
> QStringのtoInt()関数 int toInt ( bool * ok = 0, int base = 10 ) const
> QVariantのtoInt関数 int toInt ( bool * ok = 0 ) const
> 同じ関数名なのに機能が統一されてない(´・ω・`)

QSring は文字列が入っているから base を指定する意味があります。
QVariant には文字列が入っているとは限りません、int や bool もあるので
base を指定する意味がないからです。

> たぶん、ほかにもいろいろとこういったものがあるのでしょうね(´・ω・`)。

もう少しプログラミングの基本と C++ の知識をしっかり身につけてから批判するように。

56 名前:デフォルトの名無しさん [2009/04/23(木) 20:40:25 ]
>>31

> QPalette pal = ui.labelTitle->palette();
> pal.setColor(QPalette::Normal, QPalette::WindowText, QColor(Qt::black);
> ui.labelTitle->setPalette(pal);
>
> と書かないといけない(;´д⊂)
> これって、QTの改良でなんとかならないのかな。

palette でひとまとめにできるから統一的に色を扱えます。C# の方が古過ぎるのですよ。

57 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 20:56:33 ]
>>53
おお、QObject::sender()で出来たよ。すごい。
超シンプルな解法!さすがだねぃ

58 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 21:37:51 ]
QSettingsでiniファイルを読む場合、
childGroups()で得られるリストがファイル記述順になっててほしいんだけど、
やっぱり出来ないよね?やっぱり自作するしかないかな(´・ω・`)

59 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 00:05:56 ]
Qt 4.5.1 と Qt Creator 1.1 がリリースされてますね

60 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 01:32:42 ]
VS addin もbetaが消えたね



61 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 00:44:37 ]
4.5.1コンパイル中だが、北森2.5GHzで150分かかって、やっとwebkitだぜ。
いい加減i7 920辺りに買い替えるべき?C2Qなら30分くらいで終わるの?

62 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 01:21:23 ]
>>61
Q9450使っているけど、かなり時間食う。

63 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 05:51:17 ]
どっちかって言うとSSD買った方が速くなる

64 名前:デフォルトの名無しさん [2009/04/27(月) 10:08:28 ]
Qtインストールしようとしてるんだけど
これインストールフォルダに日付が入ってて気持ち悪い
みんなそのままインストールしてるの?

65 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 12:56:27 ]
SDKじゃなければ、バージョンごとのディレクトリがデフォルト

66 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 13:15:12 ]
Windowsでmingwとqt libraryをインストールしたんだけど、win32api.hか何かが無いって
警告された。でもmingwのwin32apiパッケージ自体はインストールしてるし、問題ないよな。

67 名前:デフォルトの名無しさん [2009/04/27(月) 16:29:42 ]
>>64
今ダウンロードできる最新のパッケージの場合、今月(4月)リリースされてファイル名が
qt-sdk-linux-x86-opensource-2009.02.bin(Linux版の場合)。
2009は年を表していると思うけど、最後の02は2番目のリリースと言う意味だと思う。

68 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 17:37:23 ]
>>64
気持ち悪いんだったら、自分でrenameすればokじゃない?

69 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 21:48:00 ]
>>66
随分前(といってもVer4以降だが)、MinGWすでに入れてる環境に、
MinGWのPath指定してQtインストールしたら怒られたな

いくつかファイルが足りないとかで


気持ち悪いから、MinGWのPath指定せずQtインストーラ経由でダウンロードしたら解決した
それ以来、MinGWフォルダ圧縮して保管してあるお

70 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 09:27:21 ]
>>61
とりあえず、メモリ余ってるならTEMPをRAMDISKにしてみるとか、
っていってもビルドしてみた感じボトルネックはCPUっぽいから効果薄いかな。



71 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 09:49:59 ]
>>66
CPLUS_INCLUDE_PATHとか指定すると、specsのpathを見なかった事があった。
バージョンやbuild時の設定で違うのかもしれん。

72 名前:デフォルトの名無しさん [2009/04/30(木) 17:20:50 ]
VS2005にVisualStudioアドインを入れたんですが、
QtオプションでQtVresionsタブからAddを選んで、パスを指定しても
OKボタンがアクティブにならないので押せません。
このためか、Qtのバージョンを指定しろといわれて怒られます。
どうしたら良いんでしょうか?


73 名前:デフォルトの名無しさん [2009/04/30(木) 18:10:44 ]
>>72
パスに日本語が含まれているとか?

74 名前:デフォルトの名無しさん [2009/04/30(木) 18:19:27 ]
C:\Qt\2009.02\qt
を指定しているので日本語は入っていないです。
RC1で試すと押せるのですが、パスに追加されないでいます。


75 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 20:51:19 ]
ExpressEdition版というオチ

76 名前:デフォルトの名無しさん [2009/04/30(木) 22:26:59 ]
ソースからビルドして、
C:\Qt\qt-win-opensource-src-4.5.1
を指定したら出来ました。
お騒がせしました。


77 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 14:11:48 ]
msvc2008で-staticなビルドをしようとしたんだけどなんかエラーでる・・・

みんなどんなふうにやってますか?

78 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 16:50:26 ]
基礎的なことですが教えてください_(._.)_
↓はQMapのkeys()関数です。(qmap.h)

template <class Key, class T>
Q_OUTOFLINE_TEMPLATE QList<Key> QMap<Key, T>::keys(const T &avalue) const
{
QList<Key> res;
const_iterator i = begin();
while (i != end()) {
if (i.value() == avalue)
res.append(i.key());
++i;
}
return res;
}

resをreturnで返していますが、resはこの関数内で宣言されているので、
この関数ないだけでしか存在できないのではないのでしょうか?
resって自動変数ですよね?


79 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 16:57:10 ]
78>>
自己解決しました。Orz
呼び出し元側で同じ変数が作られ、それにコピーされるわけですね

80 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 20:39:37 ]
メインウィンドウを持つアプリケーションの多重起動をしようとしたときに
既に開いているメインウィンドウがあれば、それをアクティブにするには
どうすればよいでしょう?
多重起動防止のみならQSystemSemaphoreで可能ですが。
プラットフォーム固有の処理になってしまうでしょうか?




81 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 21:31:24 ]
>>80
ttp://www.qtsoftware.com/products/appdev/add-on-products/catalog/4/Utilities/qtsingleapplication/


82 名前:デフォルトの名無しさん [2009/05/01(金) 21:53:52 ]
>>72
商用版のVisual Studio Integrationを使って欲しいということでは。

83 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 21:55:28 ]
>>81
ありがとうございます。
こんなのがあったのですね。
SDKと分ける理由はなんでしょうね。
同梱で良い気がしますが。


84 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 01:00:29 ]
QMap、QHashのkeys(), values()で取り出せるリストを
追加順にしたいのですが、出来ないものでしょうか?

85 名前:デフォルトの名無しさん [2009/05/02(土) 11:43:32 ]
>>84
入れるものに追加順が分かる識別子を付けて、取出したリストをソートしては?
mapやhashは、その機能からして追加順を覚えるように実装するものじゃないです。

86 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 16:57:22 ]
>>85
ちなみに.NETのコレクションクラスは追加順を覚えています。

87 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 19:11:32 ]
>>86
それが仕様だったとしても何も自慢にならない希ガス

88 名前:デフォルトの名無しさん [2009/05/02(土) 20:25:30 ]
>86
本当だったら出鱈目な実装だね。それかたまたま何かの加減でそうなっているだけでしょう。
プログラミングの心得が少しでもあるならそんなことはおかしいと思わなくてはならない。

89 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 23:16:26 ]
>>88
心得があればMDBでKey-Value DBを作っているのと同じだと気付くと思うが。

90 名前:デフォルトの名無しさん [2009/05/03(日) 00:48:12 ]
>>89
酷い実装だね。



91 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 01:11:15 ]
プログラマはバカだという前提の元に
プログラマに余計なことをさせないように
言語側で余計なことをするってのが
今の流行だろ

92 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 01:37:35 ]
>>90
elegantではないがintelligentな実装だよ。

93 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 02:27:24 ]
winXP+Qt4.5.1(mingw)でQtSingleApplicationを試してみました。
そのまま使うと問題ないですが、継承して使用すると
「アプリケーションを正しく初期化できませんでした(0xc0000005)。」
のメッセージボックスが出力されて落ちてしまいますが原因をご存知の方はい
らっしゃいませんか。

// MyApplication.hpp
#include <QtSingleApplication>
class MyApplication : public QtSingleApplication
{
  Q_OBJECT
public:
  MyApplication(int argc, char* argv[]) : QtSingleApplication(argc, argv) {}
};

// main.cpp
#include "MyApplication.hpp"
int main(int argc, char* argv[])
{
  MyApplication app(argc, argv);
  QMainWindow mwnd;
  mwnd.show();
  return app.exec();
}


94 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 09:30:49 ]
辞書が挿入順を記憶するのは、PHPがそうだし、Rubyも1.9でそうなったし、
Pythonも2.7では(組み込みの辞書ではなく)標準ライブラリにcollections.OrdererdDict
が追加された。

設定ファイルとか、JSONファイルとか、シリアライズ&でしりあらいずした後に
人間がテキストエディタで触りたいとかのとき、順序が記憶されると便利。
少ない追加コストで利便性が向上するのは悪くないトレードオフで、どちらかが
正しいということは無いと思うよ。

95 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 10:18:39 ]
>>94
おまい詳しいなw
LL系は知らないから参考になったお^^

96 名前:デフォルトの名無しさん [2009/05/03(日) 10:57:44 ]
>>94
hashやmapにそんな無駄なコストを入れるなんて正しくないよ。

97 名前:デフォルトの名無しさん [2009/05/03(日) 11:11:27 ]
>>93
argcに&が付いてないからでは?
MyApplication(int& argc, char* argv[]) : QtSingleApplication(argc, argv)

98 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 11:16:08 ]
>>96
単に用途によるってだけだろ
両方必要なら両方作るまでだし正しいも正しくないもねーよ

99 名前:デフォルトの名無しさん [2009/05/03(日) 11:48:30 ]
>>98
検索速度を犠牲にするのだから正しくないよ。そんなのは偽物のはhash。

100 名前:デフォルトの名無しさん [2009/05/03(日) 12:32:54 ]
>>94
比較対象が違います。
PHP、Ruby、Pythonのような元々速度が遅くて大容量データを
扱うのに向かない処理系ならそういった便利そうなものが付いて
もいいと思う。



101 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 12:42:55 ]
>>99
検索速度を犠牲にするような頭の悪い実装にするわけないでしょ?
思い込みで「酷い実装」だの批判する前にソースを読むように。

anonsvn.mono-project.com/viewvc/trunk/mcs/class/corlib/System.Collections.Generic/Dictionary.cs?view=markup

102 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 13:57:58 ]
故事成語に蛇足という言葉があってだな


まぁ別物、とまでは行かなくとも少なくともオリジナルからは逸れてる
そのオリジナルと異なるものが標準と勘違いすればそこでトラブルが発生する

>>86の場合、Pythonどうのこうのじゃなく、
コンパイラ依存になる点が大きな問題


龍に足生えると飛べなくなる、とかそういう話じゃない

103 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 14:02:19 ]
>>102
Monoの仕様は以前は追加順ではなかった。
Microsoftの実装と挙動が違うということで修正された。

実はオリジナルのソースも手に入るけど、
NDAの関係があるから晒すわけにはいかない。

104 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 15:06:29 ]
>>100
PHP, Ruby はともかく、Pythonはかなりコストを意識しているぞ。
だから、組み込みのdictはそのままに拡張したOrdererdDictを追加で作った。
同じ方針でQOrdererdDictがあっても良いと思う。

105 名前:デフォルトの名無しさん [2009/05/04(月) 01:45:45 ]
Qtのライセンスなんだけど、公式に以下のとおりに書いてある。

Qt LGPL 版の使用に際しては以下の点にご留意ください。
* Qt 4.5 以降のバージョンでのみ LGPL でも使用でき、4.5 より前のバージョンには LGPL は適用されません。
* Qt LGPL 版を使用していることを明記する必要があります。
* Qt LGPL 版のソースコードの配布を求められた際に、配布を行う義務があります。
* Qt LGPL 版に手を加えた場合には、手を加えた部分のソースコードの公開が必要です。
* Qt LGPL 版をスタティックリンクした際には、独自開発部分のソースコードを配布するか、独自開発部分のオブジェクトを配布する必要があります。
* Qt LGPL 版を使用して作成したアプリケーションのライセンスに、リバースエンジニアリングを禁止する条項を入れてはなりません。
* 同一プロジェクト内で、Qt 商用版を使用する開発者がいる場合に、他の開発者が Qt LGPL/GPL 版のみを使用することはできません。Qt を使用して作成されたソースコードに共通部分がある場合に、同一プロジェクトとみなされます。
* Qt LGPL 版で開発をした後に、Qt 商用版に移ることはできません。

得にここ
> * Qt LGPL 版のソースコードの配布を求められた際に、配布を行う義務があります。
1. これは、Qt本体のソースコードを再配布しろって読むの?
2. それとも自作アプリのソースコードを公開しろって読むの?

漏れは1.と読んだんだけど詳しい人いる?

106 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 01:49:14 ]
>>105
1.だよ

107 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 02:11:25 ]
>>106
1 で正解。LGPL のソフトウェアを改変したら、改変したソースコードを
(求めに応じて)開示する必要がある。自分で書いた部分は開示する必要は一切無し。
MPL と一緒だね。

静的リンクをしてもソースコードを公開する必要がないときちんと書いてあるのは
偉いね。

108 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 02:13:28 ]
スマソ。アンカー間違えた。>>106さんじゃなく>>105さん宛でした。失礼。

109 名前:デフォルトの名無しさん [2009/05/04(月) 09:20:03 ]
>>101
要素が多い場合にダブルバケットにした方が速い。無駄にメモリー使っている。

110 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 11:14:39 ]
>>109
ここQtスレなんで、続きはこっちでやれや。

消しゴムじゃないMONOを使ってみるスレ 2個目
pc12.2ch.net/test/read.cgi/tech/1100616350/l50



111 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 14:41:24 ]
QT4.5のLGPLライセンスを使って、
VisualStudio2008で実行ファイルを作る場合、

>dumpbin /DEPENDENTS TEST.exe
(省略)
Dump of file TEST.exe

File Type: EXECUTABLE IMAGE

Image has the following dependencies:

QtCore4.dll
QtGui4.dll
MSVCR90.dll
KERNEL32.dll

Summary

1000 .data
D000 .rdata
3000 .reloc
1000 .rsrc
1B000 .text
ってなってるから、QTは動的リンクになってるんだよね?

112 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 17:53:07 ]
WindowsでのLGPLのQT使った実行ファイル作るメモ。
間違い、補足あったらご指摘おねがいします。

MSVCR90.dllがリンクされてると、他PCで動かなくなるので、
プロジェクトのプロパティ→C/C++→コード生成→ランタイムライブラリに「マルチスレッド(/MT)」
を設定する。(代わりにmsvcrt.libが静的リンクされるようになる)

それでコンパイルしてみると、
デフォルトでリンクされるLIBCMT.libとmsvcrt.libが競合するエラーになる。
これは、プロジェクトのプロパティ→リンカ→コマンドラインに「/nodefaultlib:"msvcrt.lib"」を設定すると
エラーがでなくなる。

このときの
dumpbin /DEPENDENTS TEST.exe
は、
Dump of file TEST.exe

File Type: EXECUTABLE IMAGE

Image has the following dependencies:

QtCore4.dll
QtGui4.dll
KERNEL32.dll

となる。

113 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 21:16:20 ]
msvcrt.libは静的リンクしても大丈夫なライセンスなの?

114 名前:デフォルトの名無しさん [2009/05/05(火) 07:34:25 ]
Qtって今どういう状況なの?
数年ぐらいさわってなかったけど今みたらIDEまでフリーみたいになっちゃってるけど
コンパイラついてないんだよね

115 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 14:18:21 ]
>>114
付属してるやつもあるよ、ちなみにMINGW

116 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 02:59:48 ]
QHBoxLayout なんかに追加したウィジットって、後でそれを動的に全部消す場合、
そのウィジットのポインタを変数で保存して置かないといけないですか?
QHBoxLayout から追加されてるウィジットのポインタを取り出せないですよね?
追加してあるウィジット全部消す方法もないですよね?

↓適切でないかもしれない例プログラム
int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QWidget *window = new QWidget;

QPushButton *button1 = new QPushButton("Button1");
QPushButton *button2 = new QPushButton("Button2");
QPushButton *button3 = new QPushButton("Button3");

QHBoxLayout *layout = new QHBoxLayout;

layout->addWidget(button1);
layout->addWidget(button2);
layout->addWidget(button3);

window->setLayout(layout);

layout->removeWidget(button1);
delete button1;

window->show();
return a.exec();
}

117 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 04:10:47 ]
大抵そういうのはクラス内で行う処理で、
そういう事がしたいならクラスで保持しとけばいい

class Window : public QWidget{
public:
 Window();

private:
 void init();

 QPushButton *button1;
 QPushButton *button2;
 QPushButton *button3;
};

void Window::init(){
 button1 = new QPushButton("Button1");
 //略
 setLayout(layout);
}

そういう、どうすべきかもサンプル見ればかなり参考になる
そもそもまだオブジェクト指向を理解できてなさそうだが、
それも含めてQtのサンプルはいい教材

118 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 11:17:40 ]
単純に全部消すならtakeAtループが便利
doc.trolltech.com/4.5/qlayout.html#takeAt

119 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 13:16:03 ]
>>118
takeAtでやってみると、一見消えたようにみえましたが、
ウィンドウ背景色がいつもと違ったのでウィンドウ大きくしてみると
でっかいボタンがありました。どうも、QHBoxLayout からは削除されたけど、まだwindow上に
残ってる?ようです。deleteしてるのになぜ残るのでしょう?

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QWidget *window = new QWidget;

QPushButton *button1 = new QPushButton("Button1");

QHBoxLayout *layout = new QHBoxLayout;

layout->addWidget(button1);

window->setLayout(layout);

QLayoutItem *child;

while ((child = layout->takeAt(0)) != 0)
{
delete child;
}

window->show();
return a.exec();
}


120 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 14:07:45 ]
while ((child = layout->takeAt(0)) != 0)
{
  delete child->widget();
  delete child;
}





121 名前:デフォルトの名無しさん [2009/05/06(水) 21:35:13 ]
日本語バージョンってないん?

122 名前:デフォルトの名無しさん [2009/05/06(水) 21:37:03 ]
Qt Creatorってどんな感じなのだろうか

123 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 23:14:48 ]
>>121
何の日本語バージョン?

>>122
一言で言うと軽量のIDE

ここらへんを見れば大体わかるかと
www.qtsoftware.com/products-jp/developer-tools/tools-flipper/cross-platform-ide
www.youtube.com/view_play_list?p=22E601663DAF3A14

まぁ、無料なんだし自分で試してみるのが良いと思うよ
www.qtsoftware.com/downloads-jp

124 名前:デフォルトの名無しさん [2009/05/07(木) 10:16:30 ]
>>123
軽量だっていうことで評判はまずまずらしいのだが・・・

125 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 10:52:45 ]
Qt Creator&MinGW Windows版をつかっています。
簡単なGUIアプリを作成しようとしているのですが、
Designerで作成したuiを継承したクラスをつくりました。
その中でint型の変数をつくったのですが、
Creatorのデバッガで値を見ようとすると、
Localsのリストになく、
Watcherに手入力すると、
<not in scope>と返ってきます。

ブレークポイントは同じクラスの関数内(private slots)なので、
スコープは生きているはずだと思うのですが…。
どこか認識に誤りがあるようでしたらご教示ください。

126 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 01:56:33 ]
ボタンのクリックシグナルを処理するスロット関数内で
どのボタンが押されたのか判別する方法教えてくださいm(__)m

127 名前:デフォルトの名無しさん [2009/05/08(金) 02:33:30 ]
>>126
sender()、ダイナミックプロパティかプロパティ、QSignalMapperなど。

128 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 03:07:37 ]
>>127
ああ、重要なこと書いてないことに気づきました。ごめんなさい><
マウスのどのボタンがトリガーになったのかを判断しようとしてました。

改めて書き直します。
QTableWidgetで8つのセルに0,1を書き、1バイトのビットをセルクリック
にて0,1の反転できるソフトを作っています。これは、cellClickedシグナルで
簡単に出来たのですが、QTableWidgetに右クリックでコンテキストメニュー
が出るようにしたところ、右クリックでも0,1の反転が動いてしまう事に気づき、
右クリックの時は反転動作をしないようにしようとした次第です。

ちなみに、QPushButtonでは、ボタンが押されるのは左クリック時のみで、
右クリックでは押されませんでした。

これからすると、問題なのは、QTableWidgetのcellClickedシグナルが右クリックでも発生して
しまう事なのではないかと思えてきました。。







129 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 03:51:36 ]
>>127
>これからすると、問題なのは、QTableWidgetのcellClickedシグナルが右クリックでも発生して
>しまう事なのではないかと思えてきました。。

いややっぱり、これは正しい実装ですね。あるセルが選択された状態で、別のセル上で右クリックしたとき、
ユーザがやりたい事は最初のセルのコンテキストメニューを開きたいのではなくて、右クリックした
セルのコンテキストメニューを開きたいのだから。

となると、やっぱり、cellClickedの引数に押されたマウスボタンの情報が入ってないのが
いけない気がしてきました。。

130 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 03:58:32 ]
Qtって、ちょっと癖がある気がします。
QWidgetがタイマーの機能を持っていたり、
イベントを伝える手段がsignalと
virtual void mousePressEvent ( QMouseEvent * event )
など経由の2種類あったり、なにか統一されていない気がします。
これらって、理由があっての事なのでしょうか?
それとも、過去の手本としたライブラリのプログラミングスタイルから脱却出来ていないのでしょうか。



131 名前:デフォルトの名無しさん [2009/05/08(金) 04:07:46 ]
>>128
どのボタンが押されたかが分かるシグナルを追加するか、イベントフィルター
でどのボタンが最後に押されたかを覚えておいて、イベントフィルターに尋ねる
ようにするというのは。


132 名前:デフォルトの名無しさん [2009/05/08(金) 10:21:15 ]
>>130

> QWidgetがタイマーの機能を持っていたり、

QTimerを使えば、タイマー機能は独立したクラスとして扱えます。
実装上は辿り着くのは同じです。タイマー機能があるのはQObject
で、QObjectがタイマー機能を持つのは、以降のようにイベントの
2つの性質をタイマーに持たせられ、直交性を保って統一的になり
ます。

> イベントを伝える手段がsignalと
> virtual void mousePressEvent ( QMouseEvent * event )
> など経由の2種類あったり、なにか統一されていない気がします。

イベントの性質が違うから分けているのです。シグナルはセマン
ティックなイベントで、イベントハンドラーはシンタクティックな
イベントです。

> それとも、過去の手本としたライブラリのプログラミングスタイルから脱却出来ていないのでしょうか。

過去のを手本として、脱却していると思います。


133 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 16:26:27 ]
>>132
教えてくださってありがとうございます。
すみません、よく分からなかったのでもうちょっと詳しくお願いできないでしょうか。
QTが好きなので納得したいです。
シグナル→セマンティック→意味的?
イベントハンドラ→シンタクティック→?

自分で感じ取れているのは、
イベントハンドラはハードウェアレベルの低レベルイベントをそのまま。
シグナルは、ハードウェアの低レベルイベントを
高レベル(知的な解釈?)に解釈(QPushButtonが押されたとか)したもの。

という感じです。
でもなぜ二つの種類があるのかやっぱり分からないままです。
全てシグナルにしてしまったほうが分かりやすいのではないでしょうか?


134 名前:デフォルトの名無しさん [2009/05/08(金) 17:01:59 ]
>>129
>いややっぱり、これは正しい実装ですね。あるセルが選択された状態で、別のセル上で右クリックしたとき、
>ユーザがやりたい事は最初のセルのコンテキストメニューを開きたいのではなくて、右クリックした
>セルのコンテキストメニューを開きたいのだから。

やっぱり、右クリックていうのは、そのセルを選択しコンテキストメニューを出すのが目的であって、
そのセルをクリックしたいわけでないので、クリックイベントが発生するのは間違いが気がする。。



135 名前:デフォルトの名無しさん [2009/05/08(金) 18:50:11 ]
コンボボックスの値をマウスホイールで変える時、
コンボボックスの上からカーソルが出ないように気をつけないといけない
のがつらいのですが、なにか方法ないでしょうか?


136 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 01:32:37 ]
QtCreatorのスナップショットをソースリポジトリからとってきてwin32-msvcでコンパイルすると、
Cdb(マイクロソフトのデバッガ)が使えるようになっていますね。
Gdbよりも良さげです。

137 名前:デフォルトの名無しさん [2009/05/09(土) 09:40:49 ]
>>136
Windowsなら、GCCではなくてこれでなくてはね。

138 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 15:52:20 ]
恐ろしくあたりまえなことを言ってる気がするんだが>>136

139 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 16:10:50 ]
>>138
Creator 1.0までは、GDBのインターフェイスしか無かったんじゃないの?

140 名前:デフォルトの名無しさん [2009/05/09(土) 20:32:27 ]
>>139
1.1のリリース後に、CDB向けのコードが追加されています。
MinGWのGCCは遅くてGCCのバージョンも古過ぎるので、
Visual Studioのコンパイラーが使えないと開発には使えま
せんからよい流れです。



141 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 20:48:55 ]
>>140
ちゃんと読めば良かった・・・
Creator 1.1 をvs2008でコンパイルしてGDBしか無くて
憮然としてたところだった。

142 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 00:43:00 ]
>>133
最近使い始めたばっかりの自分の理解では、

イベントハンドラは、ウィジェットの振る舞いを「定義」する時に使う。
シグナルは、ウィジェットを「利用」する時に使う。

イベントを伝える手段は二通りあるけれど、それぞれを使用する目的が違う。

143 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 02:46:28 ]
カプセル化のために中田氏と外田氏を区別してるってカンジ

144 名前:デフォルトの名無しさん [2009/05/10(日) 13:00:13 ]
>>135
フォーカスをあてて、矢印キーを使う。
マウスイベントは、マウスポインターの下にあるウィジェットに送られます。


145 名前:デフォルトの名無しさん [2009/05/10(日) 14:15:02 ]
未だに「憮然」を見ると誤用の方の意味が、先に頭に浮かんでしまう。

146 名前:デフォルトの名無しさん [2009/05/11(月) 23:10:04 ]
labs.trolltech.com/blogs/2009/05/11/qt-public-repository-launched/

Qtのリポジトリが公開されています。自動テストのコードも入っていました。

147 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 05:06:31 ]
Qt、Javaバインディング「Qt Jambi」の開発打ち切りへ
sourceforge.jp/magazine/09/02/23/037237

ちと古い話になるが、Java向けは消えてたのか
まぁQtはC++だからこそ需要があったのであって
Javaにはあまりなさそうだしな

148 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 19:14:08 ]
qUncompressの使い方がよくわからない・・・

httpサーバから Content-Encoding: gzip つきで帰ってきたやつを処理したいんだけど・・・

QByteArray raw(reply->readAll()); //replyはリクエストに対するQNetworkReplyのインスタンス
QByteArray uncomp(qUncompress(raw));
とやっても解凍できない・・・

マニュアルみてみると
If you want to use this function to uncompress external data compressed using zlib,
you first need to prepend four bytes to the byte array that contain the expected length
(as an unsigned integer) of the uncompressed data encoded in big-endian order
(most significant byte first).
ようするに先頭4バイトにファイルサイズをビッグエンディアンでつけろってことだとおもうんだけど、
これもなーんかうまくいかない・・・

だれかqUncompressでうまくいってる人いる?

149 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 21:18:48 ]
>>148
QNetworkReply でとってきたデータならすでに展開済みだと思う。

150 名前:デフォルトの名無しさん [2009/05/18(月) 11:40:57 ]
ウエブログのなかの検索文字列に含まれるURLエンコードされた日本語を、デコードする方法について教えてください。
なぜか、下記の方法だと一部うまくいかないのですが、どうしてでしょうか。
環境はLinux、Qt4.5.1、文字コードはUTF-8。

(例)
QString string("%E3%81%82"); // "あ"をUTF-8でURLエンコードしたもの
QByteArray byteArray = string.toLatin1();
QUrl url = QUrl::fromEncoded(byteArray);
QString urlString = url.toString();
m_TextEdit->setText(urlString);

上記は、ちゃんと"あ"となるのですが、
QString string("ff%E3%81%82"); // "ffあ"をUTF-8でURLエンコードしたもの
なぜか"ff"を足すとするとうまくいきません
("off"という文字列が含まれたときにうまくいってなかった)。
こうすると結果は
"ffあ"ではなく、"ffd"となります。
どうしてでしょう?




151 名前:デフォルトの名無しさん [2009/05/18(月) 14:45:57 ]
>>150
その後、分かったことですが
どうやらQTextCodecのバグ?のようです。

#include <QDebug>
#include <QTextCodec>
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

qDebug() << "ffあ";
QString string("ffあ");
qDebug() << string;
とすると、
ffあ
"ffあ"
となります。
EUC-JPとかの環境でもなるか、どなたか調べてもらえないでしょうか?


152 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 14:51:23 ]
QTextCodecの問題なら、ローカルでも再現できますよね?
QtCreatorを使っているなら、
エディタのオプションでエンコードを変えられます。
Emacsとかでもちゃんと文字コードは変えられますよ?

153 名前:デフォルトの名無しさん [2009/05/18(月) 14:53:55 ]
>>151
訂正

今気づいたのですが、
151の結果の
ffあ
"ffあ"
は、コンソール上では
ffdy
"ffdy"
になっていたのですが、コピーして貼り付けたら
151のようにちゃんとした結果になっていました。
こちらの環境の問題かもしれません。
もう少し自分で調べてみなす。
お騒がせしました。


154 名前:デフォルトの名無しさん [2009/05/18(月) 15:03:25 ]
てst

155 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 15:32:50 ]
>>150
どうもWidgetの表示の問題のような感じ。encode/decode系は関係ないと思う。
"ff<UTF-8>" が表示で化ける感じ。 f以外を使うと化けない。
化けない環境もあるみたいなので調査中。

QString text = QString::fromUtf8("ff\xe3\x81\x82");
QLabel label( text );
label.show();
qDebug() << text;

でqDebug()は正しく表示するが、QLabel(QLineEditやQTextEditも)はNG。
先頭の文字をf以外にすると問題なし。

156 名前:デフォルトの名無しさん [2009/05/18(月) 17:02:02 ]
>>155
ffが先頭の文字でなくて、途中にあってもそれ以降にある日本語が化けるようです。
例えば
"testfftestあ"
また、"fiあ"
も化けします。

157 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 17:31:55 ]
>>156
フォントをDejaVu系から変えたら正常に表示されない?
こちらでは他のフォントにするとちゃんと描画される。
ややこしいバグだけど、デフォルトのフォントでうまくいかないのは困るな。

158 名前:デフォルトの名無しさん [2009/05/18(月) 18:00:14 ]
>>157
おっしゃる通り。フォントの問題だったようです。
ただ、DejaVu系ではだめでした。
さざなみゴシックにしたら、ちゃんと表示されました。
ありがとうございました。


159 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 06:29:42 ]
レスの投稿日のような日付の文字列を1970年1月1日からの秒数に変換しようと思ったのですが、
QDateTime::toTime_tではQDateTime::fromStringで生成したデータを変換することは出来ませんでした
何か他に便利なメソッドはありますか?

160 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 06:48:00 ]
と思ったら出来ました。すいません
年の入力を2桁にしていたので1909年とされていたようです
出力も2桁にしていたので気付きませんでした



161 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 10:16:54 ]
>>151-158
この際、Qtをつかったとき、
日本語表示に一番適したフォントをまとめてみるべき?

162 名前:デフォルトの名無しさん [2009/05/20(水) 10:04:48 ]
QTで作成したツールをVistaで起動させたら、
オブジェクトを表示させているキャンバスが、作成したGUIから外れて、
PCのモニタの左上に張り付くような感じになってしまいました。

同様の現象になった方、居ませんか?
解決策など分かりましたら、お願いします。


163 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 11:14:04 ]
doxygenのようにドキュメントを生成する方法をご存知の方いませんか?
用意されているようですがわかりません。


164 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 12:31:21 ]
>>163
doxygen はQtスタイルをサポートしてるから doxygenを使えばいいんじゃないの?

165 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 12:45:34 ]
Qtのソースにある qdoc3(tools/qdoc3) で出来るはず。
Qtのドキュメントはそれで html にしている。

166 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 12:46:18 ]
doxygenは確か、Qtリファレンスを自分でも作りたいと思った
Qt使いが作ったんじゃなかったっけ

167 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 21:11:40 ]
int QHttp::request ( const QHttpRequestHeader & header, const QByteArray & data, QIODevice * to = 0 )
の使い方が分かりません。
具体的にはmixiにログインして、
home.plのhtmlソースを取得したいのですが。
QHttpRequestHeader header("POST", QUrl("mixi.jp/home.pl").toEncodedPath(), 1,1);
QByteArray data((QString)("email=" + name + "&password=" + pass)).toAscii() );
//"email","password"など、POST時のIDはmixiのhtmlソースから取得しています。
QFile to("gotHtml.txt");
をnewでコンストラクトし、
実行スロットでrequest()を発射したところ、
gotHtml.txtは生成されるものの、ブランクファイルでした。
よい方法をご教示ください。
よろしくお願いします

168 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 22:48:15 ]
>>167
自分も分からないので確認するべきポイントを…
・POST先URLは正しいか?
・requestの戻り値は?
・emailにnameを渡しているが正しいか?
・メアド、パスワードは正しいか?
・リクエストがPOSTで正しいとすれば、&passwordって…おかしくないですか?

169 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 23:09:24 ]
>>168
ゴメン、適当すぎた
qtdemoにHTTPクライアントのexampleがあるから
それを参考にするといいんじゃないかな?

170 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 23:15:19 ]
QNetworkAccessManagerのほう推奨じゃないっけ



171 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 10:11:32 ]
QtってLGPLになった?
さらに将来LGPL版が亡くなる可能性は無い?

172 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 10:17:17 ]
>>171
LGPLのライセンス上無くなるって事はありえない
開発停止とかはありえるけど, 入手や使用が不可能になることは無い

173 名前:167 mailto:sage [2009/05/21(木) 10:21:08 ]
>>168-170
ありがとうございます。
POST先のURLなどは確認しています。
requestの戻り値は今夜確認します。
emailにnameを渡すのは、id=emailのinputにアカウント名を渡しています。
&passwordはPOSTの形式がid A,Bに対して、
"A=xxx&B=yyy"という形式だと、
POSTの仕組み関係のページに書いてあった気がします。
これも確認してみます。
qtdemoのexampleですか。
気づきませんでした、参考にします。

QNetworkAccessManagerですか。
よく分かりませんが、これも勉強してみます。

皆さん、ありがとうございました。
また詰まったらor解決できたら、
ご報告させて頂きますね。

174 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 10:56:50 ]
>QNetworkAccessManager推奨
これは知らなんだ

175 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 12:12:18 ]
>>165
ありがとうございます。
qdoc3ですが、私の環境ではQtのディレクトリ内のbinにコピーされていませんでした。
tools/qdoc3/releaseにはありましたが。
ちょっと試してみます。

>>164
折角なので本家のツールを使用してみたいと思います。


176 名前:デフォルトの名無しさん [2009/05/21(木) 15:39:05 ]
Qt から既定のブラウザの起動って出来ますか?

177 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 15:39:21 ]
qdoc3についてのドキュメントが見当たりませんが何処かにありますか?
本家の All Tools をみたのですがないようです。
qdoc3は拡張子がqdocconfのファイルを引数とするようですがqdocconfの
書き方などのドキュメントがあればと思います。


178 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 16:07:04 ]
>>176
QDesktopServices::openUrl()

179 名前:デフォルトの名無しさん [2009/05/21(木) 17:06:51 ]
QPainterでマウスカーソルにオブジェクトをくっつけて描画を行っているのですが、
Vistaマシンだと残像が残ってしまいます。
XPでは正常に描画され、VistaでもAero環境だとこれも正常に描画されます。

VistaでQPainterによる描画を行う場合、何か特別な処理が必要だったりするのでしょうか。

180 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 18:00:37 ]
初心者というか、使ったことないのでつが、Mac OS X にインストロールするの簡単でつか?
wxWidgetsをMac OS Xにインスコするのには数日費やしますたw



181 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 18:37:43 ]
>>174
QHttpクラスのリファレンスに書いてあるよ
doc.trolltech.com/4.5/qhttp.html#details

182 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 19:43:00 ]
>>180
dmg版があるし、そいつをマウントしたら親切なインストーラがあるよ。


183 名前:デフォルトの名無しさん [2009/05/21(木) 22:11:23 ]
LPCTSTRからQStringにするにはどうしたらいいですか(;´д⊂)
調べると、QString::fromUcs2()の例があるけど、QT4にはないみたいです(⊃д⊂)

184 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:12:04 ]
>>183
QString::fromUtf16() は?

185 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:42:27 ]
>>183
#ifndef UNICODE
#define T2Q(tstr) QString::fromLocal8bit(tstr)
#else
#define T2Q(tstr) QString::fromUtf16(tstr)
#endif

186 名前:デフォルトの名無しさん [2009/05/22(金) 10:48:28 ]
QTimeが24時間までしか扱えないみたいなのですが、
24時間以上を扱うライブラリはないのでしょうか?

187 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 11:44:47 ]
目的によっては QDateTime があるけど、QTimeの制限なしだけみたいなのはないな。

188 名前:167 mailto:sage [2009/05/22(金) 12:21:32 ]
>>167
です。
QNetworkAccessManagerを使ってみました。
QNetworkReply*の扱いが若干不気味ですが、
うまく行きました。

まとめると、
・SIGNAL(finished())などを受け取る前に、
QFile::write( QNetworkReply::readAll() )を呼び出すと、
ブランクファイルになる模様です。
同一スロット内に記述せずに、分けてconnectするのが賢明らしい。
・hidden属性のinput(固定値を返す)ような場合でもPOSTで渡す必要がある。
・POSTするデータ形式はQUrl::toPercentEncode()をかませる必要がある。

また、全体的なクラス構成で、
myCoreなどとしてダイアログとは別にクラスを作り、
その中でQNetworkAccessManager等を生成した場合、
thisポインタを親として渡せず(QObject*じゃなくなる)、
コンストラクタで(QObject *parent)を受け取ることができない。

回避しようとQObjectを継承すると、
今度はダイアログからの呼び出し時に、
自分で定義したメンバ関数やpublicなスロットをうまく呼び出せない。
QObject::slotMySlot()が見つかりません、と表示される…。
myCore::slotMySlot()を呼び出したいのに。

189 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 13:21:21 ]
>>188
>同一スロット内に記述せずに、分けてconnectするのが賢明らしい。
Qtのネットワーク系の多くのメソッドは非同期動作するので、リクエストだけ出して
返事を待たずに制御が帰る。相手からのレスポンスが来たら SIGNAL で通知される。
リクエストの送出とデータの受け取りは分けなくてはいけない。

>回避しようとQObjectを継承すると、
クラスの定義はどうやってる?
Q_OBJECT はあるか。
slotMySlot() は public slots: スコープで宣言しているか等。

190 名前:167 mailto:sage [2009/05/22(金) 13:48:07 ]
>189
>リクエストの送出とデータの受け取りは分けなくてはいけない。
QHttp::post()などでは、格納先を引数で渡していたので、
QNetworkAccessManager::postでも同じだと思っていたのです。

myCoreクラスではQObjectをpublicに継承し、
Q_OBJECTは書いたり書かなかったりいろいろ試しました。
slotMySlot()はmyCore.hでpublic slots:として宣言しました。
myCore : public QObject,
myCore::myCore( QObject* parent )
   :QObejct(parent)
がいけないんでしょうか。



191 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:00:34 ]
>>190
>QHttp::post()などでは、格納先を引数で渡していたので、
そうなのか。ごめん、QHttpの仕様はみてなかった。

>Q_OBJECTは書いたり書かなかったりいろいろ試しました。
Q_OBJECTはSIGNAL/SLOTに必須

class myCore : public QObject
{
Q_OBJECT
public:
myCore( QObject *parent = 0 )
: QObject(parent)
{
}

public slots:
void slotMySlot();
};

こんなクラス宣言なら問題はないはず。
これでだめだとすると connect() の方かな。
connect( replay, SIGNAL(finished()), mycore, SLOT(slotMySLot()) );
みたいな記述でいけるはずだが…。

192 名前:167 mailto:sage [2009/05/22(金) 14:10:23 ]
>>191
ありがとうございます
今夜もう一度試してみます。
(今は呼び出し側のQDialog内でmyCoreの機能をすべて移しています)

このmyCore内で、
manager = new QNetworkAccessManager( this );
をしたときはどうなるんでしょうか。
(myCore *)thisだと、managerのコンストラクタに、
一致するものがありませんよね?
(QObject *)でキャストするべきなのか、
ダイナミックキャストをするべきなのか…。

193 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:18:11 ]
>>192
キャストなしでOK。

194 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:32:02 ]
Qtに関する本って古いものばかりですが、新しい本が出る予定は無いですか?
それとも日本語チュートリアルとかネットに落ちてますか?

195 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 20:39:52 ]
オライリーのじゃダメなんか?

196 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 06:37:10 ]
Xp上で使ってるんですが、Qtでlibを作りました。
これを別のQtプロジェクトのappで使いたいんですが、どこにこのlibを使うことを
記述すればいいんでしょう?
makefileかと思ったんですが、run qmakeするとデフォルトに戻ってるみたいですし...。

197 名前:デフォルトの名無しさん [2009/05/23(土) 07:56:20 ]
>>196
Windowsのときは、プロジェクトファイル(.pro)に次のように追記すればよい。
LIBS += c:/mylibs/math.lib

qmake Variable ReferenceのLIBS項目に書いてある。


198 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 14:41:57 ]
Qt creater もひとつだな

199 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 15:56:28 ]
Qt Creatorにソースファイルを個別にコンパイルする機能ってないですよね。


200 名前:デフォルトの名無しさん [2009/05/23(土) 20:14:05 ]
QLabelに
"TEST<a href=\"www.google.co.jp\">TEST</a>"
などのリンクを設定して、ラベルをDisableにすると、
リンク部分の青字フォントがダブルストライク?のようになって汚くなります。
バグでしょうか?



201 名前:デフォルトの名無しさん [2009/05/24(日) 00:58:02 ]
>>200
どのOSとスタイルで、どのフォントを指定するとなるのでしょうか。

202 名前:デフォルトの名無しさん [2009/05/24(日) 06:08:46 ]
>>201
ごめんなさい、WinXPのXPスタイル?です。

203 名前:デフォルトの名無しさん [2009/05/24(日) 08:33:58 ]
ソースファイルをUTF-8にするのがQTのマナーだとかってに思ってたのですが、
それではMOCが失敗するのですね?
Unicodeでなくむしろ、Shift-JISやEUCでないとQtは正しくうごかない?

204 名前:デフォルトの名無しさん [2009/05/24(日) 09:06:07 ]
>>203
自分の環境はLinuxだけど、ソースファイルをUTF-8にしても問題は出ていない。
環境は?

205 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 09:42:05 ]
>>200
確かに表示が汚いな。
4.4と比べてみないとバグとはっきりは言い難いけど。
月曜になればいろいろチェックできると思うけど、
本家に報告してみるのも手。

206 名前:デフォルトの名無しさん [2009/05/24(日) 09:47:58 ]
>>199
>Qt Creatorにソースファイルを個別にコンパイルする機能ってないですよね。
ファイルを指定してコンパイルすることは、多分できないと思います。
でもプロジェクトを複数個作って(読み込んで)、
プロジェクトを切り替えてビルドするというのはどうですか。
ただし、少々面倒かもしれないけれど。


207 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 10:03:31 ]
>>197 どうもです。
LIBSをキーワードに勉強してみます。

208 名前:デフォルトの名無しさん [2009/05/24(日) 12:10:20 ]
>>200
Linuxのplastiqueスタイルだけど、
ラベルをDisableにするとEnableにする前より、リンク部分が強調されている感じになった。
同じような結果。

209 名前:デフォルトの名無しさん [2009/05/24(日) 15:11:08 ]
>>203

>ソースファイルをUTF-8にするのがQTのマナーだとかってに思ってたのですが、

Qtは、C文字列のデフォルトエンコーディングはLatin-1で、UTF-8にするという習慣は
ありません。コンパイラーが使いたいエンコーディングを正しく処理してくれるならば、
Qt では、QTextCodec::setCodecForCStrings()などでエンコーディングを設定すれば、
Qt も正しく扱えます。

>Unicodeでなくむしろ、Shift-JISやEUCでないとQtは正しくうごかない?

コンパイラーがエンコーディングをうまく扱うとは限らないので、ソースファイルには、
マルチバイト文字は記述せずに、ASCII文字にするのが最も確実です。

一番困るのは、Visual Studio 2005以上では、日本語環境でソースコード中のC文字列
をUTF-8で書いてコンパイルすると、.exe内ではSJISになってしまうことです。

210 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 15:14:11 ]
表示が混在するような場合はどうしたらいい?

ソース自体はUTF-8で書いていて、
外部から読み出したデータをQTreeWidgetで表示させたいんだけど、
そのデータがEUC-JPなんだ。
QTreeWidgetにsetCodecとか無さそうだし…



211 名前:デフォルトの名無しさん [2009/05/24(日) 16:36:52 ]
>>210
外部ファイルのエンコーディングがEUC-JPなら、QTextStreamでsetCodec()
して、QStringに読込めば、それをQTreeWidgetに渡して表示できます。

生のEUC-JPへののchar*ならば、QTextCodec::codecForName("eucJP")で返る
インスタンスのtoUnicode(char*)でQStringを得られます。

212 名前:194 mailto:sage [2009/05/25(月) 10:40:45 ]
>>195
>入門 Qt 4 プログラミング
>QT Createrの説明がない

Qt Createrの説明が無くてもおkなんですか?

それとも、
>Qt GUIプログラミング (C magazine)
の方が良いのかなぁ?

Qt導入するということになったら、
自分が本読むだけでなくて、
本渡すだけでQt Createrの説明終わらせる方が楽なようなw


213 名前:210 mailto:sage [2009/05/25(月) 11:31:56 ]
>>211
現状では、
QString A;
QString B;
となっていて、AがUTF-8(ソースコードで直値で文字列を指定)で、
BがEUC-JP(QBufferから読み込んでいる)なんだ。
うまく切り替えができないものでしょうか?
それとも、この構成自体がナンセンスでしょうか。

214 名前:210 mailto:sage [2009/05/25(月) 11:36:53 ]
ごめん、自己解決。

Aをtr("")としていて、BはそのままのQStringということで、
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec);
codec = QTextCodec::codecForName("euc-JP");
QTextCodec::setCodecForCString(codec);
と、trとCStringに別々に*codecを渡せばOKでした。

215 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 14:46:34 ]
>>213
そんなグローバルな設定変えなくても、QBufferからQStringを読み出すときに
QTextStream をかませて、 QTextStream の setCodec() 使えば良いのでは?

216 名前:210 mailto:sage [2009/05/25(月) 15:20:01 ]
QBuffer *buf;
QString answer;
QTextCodec *codecEucjp = QTextCodec::codecForName("euc-JP");

という時に、
QTextStream str;
str = buf->readline((qint64)size);
str.setCodec( codec );
answer = str.read((qint64)size);
ということでしょうか。
なるほど、これを書いていて211さんの返答がようやく理解できた気がします。
表現が私には文学的で理解ができなかったのですorz

(QTextStreamじゃなくてQBufferから読みだしてるから、
 setCodec()使えないよなぁ、と思ってしまってました)

ありがとうございました

217 名前:215 mailto:sage [2009/05/25(月) 16:13:50 ]
>>216
俺は PyQT ユーザーなのでリファレンス読んだだけの回答になるけど、

QTextStream strm((QIODevice*)buf); // キャストはたぶん要らない
strm.setCodec("eucJP")
QString answer = strm.readLine()

俺が「かませる」といったのは、こんな風に QBuffer を QTextStream で
wrap することであって、QBufferから一行取り出してはQTextStream に
コピーすることじゃない。

218 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 16:39:45 ]
>>200
Linux/Windows の 4.4, 4.5 で確認。
Linux 4.4: 汚い
Linux 4.5: 強調されず(Disabledな見た目ではないが、4.4ほどでもない)
Windows 4.4/4.5: 汚い

Linux の 4.5 は最初再現していたけど、 $HOME/.config/Trolltech.conf を消したら再現しなくなったorz

バグっぽいけど聞いてみないとわからないかな。
直っても青い色が変わるわけでもなさそうなので効果は限定的かも。

219 名前:デフォルトの名無しさん [2009/05/25(月) 18:53:56 ]
>>212

> Qt Createrの説明が無くてもおkなんですか?

Qt Creatorは、IDEのひとつなのでなくてもやって行けます。
Qt 4を覚えるには、もうひとつはQt 3なので、Qt 4のこちらがよいです。

> Qt導入するということになったら、
> 自分が本読むだけでなくて、
> 本渡すだけでQt Createrの説明終わらせる方が楽なようなw

Qt Creatorのマニュアルの翻訳は、Qt Creatorの日本語化プロジェクトで
行なわれているので、できるまでは英語で我慢して、入門Qt 4プログラミングを渡せば楽でしょう。


220 名前:210 mailto:sage [2009/05/25(月) 23:48:39 ]
>>215
ありがとう、助かりました。
改行コードが取り除かれてることに気づかず、2時間悩んだのは秘密です(w

オライリーのは版によっては誤植が多々あるので気をつけてください。
その点、原本は英語ですが割と読みやすいです。
そもそも技術書の英語は文学と違って先入観を捨てれば読みやすいと思う。
まぁ、こればかりはホントに主観だけど。
それと、チュートリアル本としてはあまりいい構成ではないと思います。
表計算ソフトのメインウィンドウのサンプルが長く、
しかも章を跨いで打ち込みをしないと、
実行してどう動くのか掴みにくいと思います…。
私の場合はそこで諦めて、後半はパラ見だけになってしまいました。



221 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 08:19:45 ]
最近流れ早いね。

書籍はC++ GUI Programming With Qt 4 Second Editionがあれば他はいらないと思う。
英語の本とはいえ英語が赤点だった自分でも理解できているので問題ないかと。
一応、Googleブック検索でFirst Editionが読めるので、試し読みしてみることをすすめる。

Qt Creatorはまだ出たばっかりというのと軽量IDEという方向性的なため
機能がシンプルなので特に迷うことなく使用できるはず。
まぁ、裏を返せば出来ることが少ないんだけどね。

222 名前:212 mailto:sage [2009/05/26(火) 08:53:55 ]
>>219 221
了解。
Qt 4本買ってみます。(英語アレルギーの人が居るかもなので、日本語買うかも)
Qt Createrは軽量IDEなんですね。
とは言っても、XCodeよりは賢い動作っぽいし(マカーが怒る?)、クロスプラットフォームなところが安心ですね。
wxDevC++で作成したコードをMACに送ってXCodeコンパイルやったら辛かった。

223 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 10:51:29 ]
英語でよければまずはこれ
ttp://www.qtrac.eu/C++-GUI-Programming-with-Qt-4-1st-ed.zip

ttp://doc.qtsoftware.com/4.5/how-to-learn-qt.html
からリンクが張られているQt4本の1st edition。
2nd editionを買う前に目を通すといい。

224 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 13:23:28 ]
1st editionのやつってサンプルコードどこかに公開されてたりはしない?
あくまでちゃんと本買ってCDROMからってことなのかな?

225 名前:デフォルトの名無しさん [2009/05/26(火) 19:33:52 ]
GUIでマウスが置かれたところにチェックボックスがあったときに
周りを別の色で強調するようにしたんだけど
FreeBSDではマウスをそこから離すと強調したところが真っ黒になってしまう

これってQtじゃなくてグラフィックドライバの問題なんですかね

226 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 20:24:35 ]
googleのブック検索で入門Qt4読めるよ。
C++GUI programing with qtもセカンドエディションがある。

227 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 09:03:06 ]
dクス>>223 >>226
何これ、かなり読めちゃうね。

228 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:18:48 ]
Qt Designerでダイアログにボタン等を配置してからサイズ調整すると
ダイアログのサイズが配置されているウィジェットを無視して最小にな
ってしまいますが前からこんなんでしたか?
ウィジェット群に適当なマージンをとってダイアログがリサイズされたと
記憶しているけども。


229 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 16:40:37 ]
レイアウト設定せんとだめじゃね?

230 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 18:34:10 ]
全てのウィジェットは何らかのレイアウトに配置済み。

QVBoxLayout
 -QGridLayout
  -QWidget(4個)
 -QHBoxLayout
  -QWidget(2個)




231 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 21:13:23 ]
どうもDesignerでダイアログをデザインすると、できるソース(ui_xxx.h))がおかしくないですか?
ウィジェットを色々配置して何らかのレイアウトを使うとui_xxx.hのclass Ui_xxxのメンバに無意
味と思えるQWidget*のインスタンスwidgetができるのですがなんでしょうね。


232 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 07:28:23 ]
>>228 231
多分 designer のレイアウトの使い方が間違ってる。
top level widget にレイアウトを割り当てるときには
レイアウトしたいwidgetをマークしてレイアウトを選ぶのではなく、
top level widget(この場合は最上位のDialog)を選んでレイアウトを選択する。
( レイアウトを新たに作るのではなく、Dialogにレイアウトを割り当てる)

Object Treeで Dialog の直下にレイアウトがないのに
レイアウトが反映されている状態が正常。
Dialogのプロパティに Layout があるかどうかをチェック。

designerのこの仕様は正直わかりにくい。

233 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 12:09:46 ]
それ、わかり辛いですね。
教えて頂き、ありがとうございます。


234 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 22:59:58 ]
WindowsにてMinGWでビルドしたのですが、
QtCore4.dll,QtGui4.dll,QtNetwork4.dll,mingwの(名前忘れた).dll
が配布時に必要ですよね。
これらのdllって、\qt2009.2\Qt\binから持ってくるべきですか?
それとも\qt2009.2\binから持ってくるべきですか?

それと、それらのexeファイルとdllの位置関係なのですが、
同じディレクトリに入れればいいのでしょうか。
プロジェクトファイルで指定ですか??

とりあえず、Qtの無い環境で、上のdll4つ、
同じ場所においてDependencyWalkerで走らせたのですが、
dllがないってエラー吐かれてしまいました。

235 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 06:41:36 ]
>>234
debugでビルドしたものではありませんか?
debugビルドした場合は、QtCore4d.dllなどの
ファイル名が〜dとなっているDLLに依存しますよ

236 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 08:45:57 ]
QWinWidgetクラスを使うとWin32APIとごちゃまぜで使えそうなんですが、
LinuxとかWindowsCEとかはどうやってごちゃ混ぜに書くんでしょうか?


237 名前:234 mailto:sage [2009/05/29(金) 12:24:15 ]
releaseですね…。
debugでビルドしたものは4MB近くあるのに対して、
releaseでビルドしたものは100KBなので、間違いないです。
ちなみに、プロジェクトファイルは以下のようになっています。

TEMPLATE = app
TARGET = ./bin/myApp
DEPENDPATH += ./src
INCLUDEPATH += ./src

238 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 12:56:04 ]
>>234
具体的にどのdllがないっていわれる?

簡単なアプリなら
app.exe QtCore4.dll QtGui4.dll mingwm10.dll だけでうごいてるけど。
画像を扱う場合などは plugins の下を適当にコピーして場所を設定する必要があるかも。
ただし、この場合のエラーは別の原因だと思うが。

239 名前:234 mailto:sage [2009/05/29(金) 13:27:23 ]
Dependency Walker下で実行すると、
MSJAVAとかを抜きにすれば、
QtCore4.dll
QtGui4.dll
QtNetwork4.dll
mingwm10.dll
のすべてが赤い表示になってしまいます。

画像はpngファイルをアイコンとして使っていますが、
仰っているように、
GUI表示されたときにきちんと表示されているので、
問題は他にあるのでしょう。

240 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 14:09:13 ]
Vista(Qt SDK はインストールしたがPATHは通ってない状態)で
app.exe だけある状態で Dependency Walker (2.2) を動かすと
MINGWM10.DLL, QTCORE4.DLL QTGUI4.DLL がないと言われる。

app.exe と同じディレクトリに上記の3つのDLLをコピーすると問題なし。
(WARNINGはあるが、動作する)。
コピー元は C:\Qt\2009.02\qt\bin

その場合にツリー表示されているDLLは
KERNEL32.DLL, MSVCRT.DLL, MINGWM10.DLL, QTCORE4.DLL, QTGUI4.DLL
の5つ。後ろの3つ(or +QTNETWORK4.DLL)をコピーすれば、うまくいくはずだが…。



241 名前:234 mailto:sage [2009/05/29(金) 14:19:37 ]
>240
ありがとうございます。
プロジェクトファイルでの記述は無関係でしょうか??
リファレンスを読む限りでは、
同一ソリューション内の別プロジェクトに、
依存する場合は云々と書かれているので、
おそらく関係ないんでしょうね…?

242 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 14:31:19 ]
>>241
ビルドできていれば問題ないとは思うけど。
proファイルはこれだけ(Creatorで作成)。
app_bundle は Macにしか効果がないようなのでCONFIGはほぼ無関係。

TARGET = app
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp

そこそこ規模のあるアプリで試しているようなので、
簡単なものでチェックしてみては。


243 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 15:58:28 ]
Qtで簡単 GUIプログラミング―Qt入門書を読む前に読む「入門書」
ttp://www.amazon.co.jp/dp/4877832211/

こんな本出てたんだなとおもったら、いきなり評価☆一つとはw

244 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 16:04:35 ]
しかしこの評価もなんだかなぁ
この人にとっては役に立たなかったんだろうけど

まぁ俺にも役立ちそうに無いが

245 名前:234 mailto:sage [2009/05/29(金) 16:11:11 ]
簡単なHelloWorldでもダメでしたorz
ビルド環境にも問題があるような気がしてきました。

Athlon64マシンにWindowsXP32bit版、MinGW32でビルドした場合、
動く構成はどのようになるのでしょうか。

246 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 18:48:30 ]
俺のとこはMingwでもvisual c++でも動くけどなあ。
linuxのgccでも動く。
セロリンだけど。

247 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 18:51:21 ]
思いついた!dllへのパスが通ってないんじゃね?

248 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 03:01:14 ]
Windowsのファイルのプロパティで出力されるバージョン情報を扱うクラスはありますか?
setApplicationNameやsetOrganizationNameがそれだと思ったのですが違うようで。


249 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 11:35:32 ]
>>248
そういう機能はqmakeの方だな。
ttp://doc.qtsoftware.com/4.5/qmake-variable-reference.html#version


250 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 12:11:10 ]
>>249
VERSIONは与えられました。
qmakeの変数には見当たりませんが会社名等は扱えないのでしょうか?
MFCのリソースのようなものがあれば良かったのですが。




251 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 13:40:42 ]
Win32リソースのことだろ?
そういうのはwindresを使うものと思ってたが

252 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 14:15:40 ]
>>250
マニュアルにはないけれど、 QMAKE_TARGET_COMPANY

他の関係変数は QMAKE_TARGET_DESCRIPTION, QMAKE_TARGET_COPYRIGHT, QMAKE_TARGET_PRODUCT
詳しくは qmake のソースを。(qt\qmake\generators\win32\winmakefile.cpp)

253 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 14:53:09 ]
ありがとうございます。
マニュアルにないということは将来別の方法でサポートする可能性があるのでしょうかね。
qdoc3も表に出していないツールのようで、どうもDoxygenを使った方が良いようですし。


254 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 15:16:14 ]
変数名くらいは変わる可能性あるかもな。
機能がなくなることはないと思うが、気になるようならrcファイルを作って、
RC_FILE でそのファイルを指定するようにした方が確かなのかもしれない。
RC_FILE についてはマニュアルに記載してある。

255 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 16:23:50 ]
QHeaderView::setResizeMode(int, QHeaderView::ResizeMode) について質問です。

以下のようにモデルが設定されていない、あるいはモデルのデータがない状態で QHeaderView::setResizeMode(int, QHeaderView::ResizeMode) を呼ぶとプログラムが落ちます。

QTreeView view;
view.header()->setResizeMode(0, QHeaderView::Interactive);

or

QTreeView view;
QStandardItemModel *model = new QStandardItemModel();
view.setModel(model);
view.header()->setResizeMode(0, QHeaderView::Interactive);

代わりに QHeaderView::setResizeMode(QHeaderView::ResizeMode) を呼んだ場合は落ちることはありません。この動作は仕様なのでしょうか?

QHeaderViewを継承してサブクラスを作成し、第一列のみサイズ変更可能にしたいのですが・・・何か対処方法をご存知の方、別のアイディアをお持ちの方がいればよろしくお願いします。

256 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 17:35:03 ]
>>255
ASSERT出して落ちてるな。
ASSERT: "visual != -1" in file itemviews\qheaderview.cpp, line 1168
基本的に落ちるのはバグ。
qt-bugsにメール出して直してもらうのが一番。

257 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 18:48:14 ]
>>256
確認ありがとうございます。
やっぱりバグなんですかね。トラック見てもそれらしいものが見つからなかったので、とりあえずメール出してきました。
しばらくはモデルのデータセット後にsetResizeMode()を呼ぶことにします。

258 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 19:05:58 ]
floatingしていないQDockWidgetのサイズをプログラム側で動的に変更したいのですが、どこを弄ればいいですか?

259 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 20:44:36 ]
>>150-156 の件、直ってるな。
ttp://qt.gitorious.org/qt/qt/commit/b89efc8e7f3289ff85a5076297e4357283dd24a5

260 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 02:28:28 ]
日付が変わったら画面を更新したいんですが、日付の変更を通知するようなシグナルってありますか?



261 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 10:41:15 ]
>>260
ないので QDateTime と QTimer を使って作る。

262 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 15:36:12 ]
>>258
楽な方法は見つからなかった。

setFixedSize() を呼び出すとサイズが変えられるから SizeHint や SizePolicy を
うまく設定すれば何とかなるかもしれない。

面倒だけど QMainWindow::saveState() した結果を変更して QMainWindow::restoreState()
すれば変更できるかも。

263 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 18:49:34 ]
QHeaderViewから親のQTreeViewにアクセスする方法ってある?
QTreeView::setHeader()のソース見ると、d->header->setParent(this)っていうのがあるんだけど、QWidgetからQTreeViewへどうキャストすればいいのか分からない・・・

264 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 01:04:18 ]
>>263
QHeaderView *header = view.header();
QObject *obj = header->parent();
QTreeView *tree = qobject_cast<QTreeView*>(obj);


265 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 01:31:26 ]
>>264
できた、ありがとう! qobject_cast知らなかった、便利そう♪

266 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 10:52:22 ]
Qt Creatorのチュートリアル日本語版は無いんでつか?

267 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 17:41:07 ]
QTabWidgetでタブの配置をEast、Westにしたとき
┌┤
││
││
├┤Widget
││
││
└┤
こうではなく

┌────┤
├────┤Widget
└────┤
このような形にする方法ってありますか?

268 名前:デフォルトの名無しさん [2009/06/06(土) 12:34:56 ]
>>266
sourceforge.jp/projects/qt-creator-jp/
ヘルプファイルの日本語化をされている方がいます。

269 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 10:09:17 ]
QSplitterの棒のデフォルト位置をデザイナで変更するはどうすればいいのでしょうか?
もしデザイナでできないならば、コードではどう書けばいいのでしょうか?

270 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 12:32:49 ]
>>269
Splitterの下にあるWidgetの SizePolicy -> Horizontal(Vertical)Stretch の値を
それぞれのWidgetで明示するといいみたいです。
左のWidgetでは 10, 右のWidgetは 1 とか



271 名前:デフォルトの名無しさん [2009/06/09(火) 02:28:23 ]
QtCreatorをFreeBSDで動かせてる方いませんか?
当方Win上のVMware上のFreeBSD7.1にて、Qt4.5.1とQtCreatorのコンパイルは
何とかできたのですが、QtCreatorを実行してもウィンドウが現れないのです(;´д⊂)

PortsのKDE4.4.2も同時に動かしてあって、これにつかってるQt4.4.3が影響してるのか。。

QtCreatorを動かすために、gdbで手動デバッグ、やPrintfデバッグするしか手が思いつかなくて(;´д⊂)

272 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 02:44:47 ]
>>271
エラーメッセージは何て言ってるのよ? っていうかメッセージの出しかたがわからんのか?
Konsoleでqtcreatorって打って(でいいのかな?)起動してみれ。

Error:うんこが漏れました

とか出てくるからそれ読んで原因究明。出てこないんならどこかに起動してる。
別のデスクトップとか。

273 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 05:30:07 ]
Qt を使って作られたソフト例
にOperaも入れてやれ。


274 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 05:32:47 ]
Qtってのにうすうす興味があって、
いろいろ調べているうちにさらに興味が湧いてきて

・・・ついに作ってみようかなと言う気になってきた俺が居る。


275 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 08:57:09 ]
つ Qt Creator

276 名前:デフォルトの名無しさん [2009/06/09(火) 12:13:42 ]
>>271
ごめん、エラーメッセージのこと書き忘れてた(⊃д⊂)

Konsoleで
>qtcreator.bin
とやると、
即プロンプトが帰ってきて、エラーメッセージは表示されない。
(コンソールには、QObject: Do not delete object, 'unnamed', during its event handler!ってでる)

即プロンプトが帰ってくるのが落ちてるんだと思い込んでたけど、
Win上のQtcreatorをコマンドプロンプトで起動すると、同じように即プロンプトが帰ってきたから、
これは問題ないとおもひます。

qtcreator.binからqtcreator_process_stubを呼び出してるみたい。
という状況です(;´д⊂)


277 名前:デフォルトの名無しさん [2009/06/09(火) 13:52:15 ]
QTcreatorをデバッグするために-gつけてコンパイルする方法さがしたら、
*.proファイルのCONFIG変数にdebugを追加すればいいとあったんだけど、
自作プログラムでは-gがつくのに、QtCreatorでは付かないよ(;´д⊂)
なんでかな。
CFLAGとかに追加するのをやってみる。

278 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 14:41:35 ]
>>277
qmake qtcreator.pro -r CONFIG+=debug
で Makefile を作ってみると -g はついているけど。

279 名前:デフォルトの名無しさん [2009/06/09(火) 14:47:15 ]
>>278
おおありがとう(;´д⊂)
やってみる

280 名前:デフォルトの名無しさん [2009/06/09(火) 14:49:25 ]
>>278
-gつきでコンパイル始まったよ
ほんとありがとう!



281 名前:デフォルトの名無しさん [2009/06/09(火) 18:42:26 ]
Linux + Qtで printf("\a");で音が出ない
systen("beep");でも無音
G++ で書くと、どちらも鳴るのになぜ?

282 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:37:48 ]
>>281
"\a"って音を出すんだっけ?
音とは限らない何らかの信号をだせばいいんじゃなかったっけか?

まあ全然分からんから誰か頼むわ。


283 名前:274 mailto:sage [2009/06/09(火) 21:38:34 ]
>>275
あんがと!
よし!やってみるわ。
ただ趣味グラマだから実際にプログラミングできるのは
相当先になりそうだがね。

284 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 23:00:11 ]
ファイルパスが存在し得るものかどうかを判定したいのですが、便利な関数はありますか?
*等を含んでいるものや、/が連続するようなパスなどは無効と判定したいのですが・・・

285 名前:デフォルトの名無しさん [2009/06/10(水) 00:55:44 ]
QtCtreatorをデバッグしてるものですが、
QtCreatorをgdbでデバッグしてみると、
エラーで落ちてました。エラーメッセージを吐くコードがちゃんと
あったのですが、ターミナルにはログメッセージがでないようでした。
qDebug()でデバッグしようとしたら、その文字列さえもターミナルにでてこ無くて、
調べてみたところ、QtSingleApplicationでapp変数(return.exec()するやつ)
を生成してる行以降からqDebug()が出力されなくなってました。

QtSingleApplicationって前このスレで出てた、インスタンスを複数作れないよう制限するやつですよね。
これに関して何か知ってる方いませんか?(;´д⊂)

286 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 06:16:51 ]
>>284
QDir::exists, QFile::exists, QFileInfo::exists

287 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 11:56:42 ]
>>286
284じゃないが、それは実際にファイルがあるか調べるメソッドだよ

288 名前:デフォルトの名無しさん [2009/06/10(水) 16:28:20 ]
>>285
qDebug()関係のメッセージが表示されない原因が分かりました。
Qtのコンパイルに-no-iconvを指定すると出来ましたヽ(´ー`)ノ


289 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 22:10:33 ]
はじめまして。
メニューの項目の作り方についてご質問なのですが、
シグナルスロットを使用しない方法か、
どのメニューを選択しても同じ関数が呼ばれて、IDで識別するような方法ってありますでしょうか。
つまり、他のGUIライブラリのメニューのような使い方がしたいのです。
サンプルだとQActionを使ったシグナルスロットの方法しか書いてありませんでした。
これだと、メニューの項目数と同じだけ関数を用意しないとだめなので、
動的なメニューが作りにくいです(´Д⊂


290 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:02:16 ]
>>289
QAction を同じ SLOT につなげて、SLOTの中で
sender() を使ってどこからか判断したら。
QAction の文字列とかが欲しいなら
QAction *act = qobject_cast<QAction*>( sender() );
で sender() から QAction を取れるから、 act->text() とかも使える。

って、それでいいなら QMenu::triggered(QAction*) シグナル使えばいいのか。



291 名前:デフォルトの名無しさん [2009/06/11(木) 14:29:58 ]
Qtプログラムをgprofで動作解析するためには、
QTライブラリを -pg -static つきでコンパイルし直さないといけない
と英語のページで書いてあるように思えたのですが、本当ですか?

292 名前:デフォルトの名無しさん [2009/06/11(木) 19:43:37 ]
>>291
Qtだからというのではなく、gprofとはそういうものです。


293 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 19:49:32 ]
Doxygenスレとどっちで聞こうか悩んだのですが、
お願いします。

ttp://www.doxygen.jp/docblocks.html
ここにある
>Qtスタイルを使うことができ、
>この例が示すように、C スタイルの
>コメント・ブロックが開いた直後に
>感嘆符 (!) を追加します。
/*!
* ... text ...
*/
って書いてあります。
私はDoxygenの知識はあるのですがQtに関しては全く無知です。
Qtにもドキュメント自動生成が出来たりするのですか?


294 名前:デフォルトの名無しさん [2009/06/12(金) 01:47:31 ]
>>293
開発元内製のqdocでドキュメント生成されていて、Qt 4.4からqdocのソースが公開されています。
Qt1のソースコードを見ると、この頃から /*!でドキュメントがソースに埋込まれていて、.docもありますね。

295 名前:デフォルトの名無しさん [2009/06/12(金) 12:35:04 ]
>>292
すみません、確認のためにもう一回お願いします。
解析対象のプログラムを-pg -static付きでコンパイルしないといけない、というのと
QTもスタティックライブラリにコンパイルしなおさないといけないのは分かってるのですが、

それだけではくQTライブラリも、-pg 付きでコンパイルしないといけないかどうか
の答えが292であってますでしょうか?

296 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 15:29:38 ]
>>295
Qt自体をコンパイルしなおさないと、qtの中にプロファイル用の
コードが入らないから、実際にはqtの中で時間を使っているのに
プロファイル結果ではその呼び出し元が時間を使っているように
見えてしまう。

それでも良ければ別にQtをコンパイルする必要もQtをスタティック
リンクする必要もないよ。

297 名前:デフォルトの名無しさん [2009/06/12(金) 15:44:57 ]
>>296
おお、そうなのですか。
自作プログラムだけを-pgつけてコンパイルすると、
コアダンプするようになってしまって、QT側に何かしないといけない
と思い込んでおりました。
そもそもコアダンプすることはないのですね
ありがtごうございました。調べてみます。

298 名前:296 mailto:sage [2009/06/12(金) 15:52:58 ]
>>297
ごめん、確認しないで書いた。
コアダンプするなら、それ調べて、Qtが原因ぽかったら再ビルド必要かも。

299 名前:デフォルトの名無しさん [2009/06/12(金) 21:32:53 ]
>>295
いけなくはないけれど、Qtの中がプロファイルできないから、結果はスカスカで、
どこで時間がかかっているかが分からないですよ。

300 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 02:05:11 ]
Qtcreatorので、コンテナボックスを作る方法ってあるのかな?

勿論、ソースでそのまま書けば作れるんだけど、
メイン画面やダイアログみたいに見ながら簡単に作りたい。
でも、GUIツールのところを見てもちょっと見当たらないんだよね。



301 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 02:06:05 ]
>>300
あ、ゴメン、大間違い。

コンテナボックスじゃなくて、コンテキストメニューのことです。

302 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 16:16:36 ]
UNICODEMAP_JPをアプリ側で設定してもコーデックに反映されません
getenvで確認しても環境変数自体は設定できているようなのですが、QTextEdit等に表示すると反映されていませんでした
何が問題なのでしょうか?
環境はWindowsXPでQt4.5.1を動的リンクして使っています

303 名前:デフォルトの名無しさん [2009/06/13(土) 16:49:56 ]
Qtをソースコードから入れたい場合どうすればよいのでしょうか

304 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 17:27:14 ]
あきらめろ

305 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 18:04:38 ]
>>302
俺も前に調べたんだけど、main関数の最初に環境変数書き換えても間に合わないみたい
実行時に変えたいならランチャーを作成するしかないんじゃないかな

306 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 23:20:45 ]
>>303
ttp://doc.qtsoftware.com/4.5/installation.html

307 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 21:26:20 ]
addin入れられなくても
パス指定したらvisual studio EEでQt使えるよね?

308 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 21:29:02 ]
>>307
そりゃ使えるよ


309 名前:デフォルトの名無しさん [2009/06/15(月) 22:02:54 ]
class MainWindowにclass Dialogをメンバ変数として持ち、Dialogから
MianWindowないの関数を呼び出すと、関数までは飛べるんですが、
その後終了してしまいます。
Qtのsignal slotの流れが壊れてしまうのかと思うんですが、
何か、呼び出された側から、呼出し側の関数を呼ぶ方法がありますか?


310 名前:309 [2009/06/16(火) 21:21:24 ]
自分でslotを作れたんですね。




311 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 20:41:44 ]
メインウィンドウ内に、lineEditが3つあって、そのうちの1つにフォーカスを
移すにはどうするの
タブを移動するには


312 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 20:43:11 ]
QWSInputMethodの役目がよく分からないんですが、自分でウィジェットを作ったときに
日本語入力を可能にするためのもの?
別アプリに文字列送信とかも出来るんでしょうか。
ググっても情報がないもんで...。
別アプリに送信できるとうれしいんですけど。

313 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 22:21:32 ]
>>312
Qt for Embedded Linux で Input Method を実装するためのもの。
X11 を使わない組み込みLinuxだとIMのためのプロトコルがないため、
このクラスを使って実装する。
X11 とか Windows で使っているなら無関係。

別アプリとの通信は X11 だと QtDBUS があるけど、
Windows や Mac だと IPC 使って自分で書かないとだめだったかも。

314 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 22:39:35 ]
別のプログラムのウィンドウ情報を取得することはできますか?
ウィンドウ位置とタイトルを取得したいのですが・・・

315 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 15:57:49 ]
What is your environment?

316 名前:デフォルトの名無しさん [2009/06/19(金) 19:40:50 ]
>>312
Qt for Embedded Linuxで日本語入力を実装するときに使います。
Qt for Embedded Linuxで、別アプリケーションに文字列送信したいなら、QCOPを使えば簡単にできます。

317 名前:314 mailto:sage [2009/06/19(金) 19:50:50 ]
>>315
すいません
WindowsXPとVistaでの使用を考えています

318 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 20:46:58 ]
ListWidget上などで、右クリックで、ポップアップメニューを出すことは
できますか?


319 名前:デフォルトの名無しさん [2009/06/20(土) 11:22:31 ]
>>318
contextmenuをキーにしてリファレンスマニュアルを探すと分かるでしょう。

320 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 17:00:11 ]
日本語版リファレンスが糞重いな・・・



321 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 17:39:36 ]
QTreeViewを使用して、行を一行固定になるようにする方法ってありますか?
複数行ある文字列をModelにくわせたら、TreeViewも複数行で表示されてしまいます。
QTableViewでは、複数行ある文字列でも一行表示(改行以降の文字列は表示されない)されます。
でも罫線が表示されて微妙な感じです。

322 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 18:57:36 ]
>>321
QStyledItemDelegate を継承して、 displayText() を書き換えて表示する文字列を変更する。


323 名前:デフォルトの名無しさん [2009/06/20(土) 21:54:39 ]
>>320
どこのでしょう。

324 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 01:31:09 ]
>>322
ありがとう。
QStyledItemDelegateから派生したMyDelegateクラスで以下のようにしたら思い通りになりました。

QString MyDelegate::displayText ( const QVariant & value, const QLocale & locale ) const
{
if(value.type() != QVariant::String)
return QStyledItemDelegate::displayText(value, locale);

QString text = value.toString();
QString ret = text;

for(int i = 0; i < text.count(); ++i)
{
if(text.at(i) == 10) //改行なら
{
ret = text.left(i);
break;
}
}

return ret;
}

でも気になったところが...
if(text.at(i) == 10) //改行なら
のところを
if(text.at(i) == QChar('\n'))
でも行けそうな感じしたんだけどダメでした。
どうも、QChar('\n')を110 (小文字のn)と判定してしまっています。
だれか原因分かりますか?
OS X Tiger + QT Creatorで開発しています。

325 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 02:07:00 ]
>>324
Mac は知らんけど、'\\n' だったらうまくいくとか?

自分でループ回すより QString::indexOf() を使うのおすすめ。

326 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 02:59:03 ]
以下の対応したソースをWindowsに持ってきてVS2005でビルドしたらすんなり通った。
int i = text.indexOf(QChar('\n')); // きちんとQChar('\n')は10として評価される
ret = text.left(i);

ちなみに、OSX上で、\\nってやってもダメでした。

327 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 03:06:05 ]
OSXでは、Optionキー + \ を押さないとバックスラッシュとして認識されないみたいです。
(マカーからすれば当たり前のことなのか。)
お騒がせしました。

328 名前:318 mailto:sage [2009/06/21(日) 12:51:43 ]
>>319
勉強してみます
ありがとうございました。


329 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 12:56:18 ]
QListWidgetでファイル名を表示してるんですが
addItemはできるんですが、削除するにはどうしたらいいんですか?
ui->listWidget->removeItemWidget(item);
かと思ったんですが、削除できません。


330 名前:デフォルトの名無しさん [2009/06/21(日) 13:51:17 ]
>>329
QListWidgetからのアイテムの削除は、takeItem()で。
removeItemWidget()は、アイテムに設定したウィジェットの削除です。



331 名前:329 mailto:sage [2009/06/21(日) 18:17:33 ]
>>330
ありがとう
でも、takeItemとは、とても思いつかなかった


332 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 19:00:43 ]
WindowsとLinux(Ubuntu 8.10)の2つの環境下でQt4.5を使っています。
QtWebkitを使いたいと思っているのですが
include時に'QtWebkit': No such file or directoryと表示が出ています。
両環境ともにlibなどはインストールされているっぽいのですが…。
何か予め設定が必要なのでしょうか?

333 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 19:15:27 ]
>>332
pro ファイルに
QT += webkit
はある?

334 名前:331 mailto:sage [2009/06/21(日) 19:42:59 ]
>>333
できました!!
プロジェクト作る時にちゃんと聞いてきてましたね…。
見逃してました。
教えていただきありがとうございました。
まだ触り始めですが色々できそうで楽しみです。



335 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 02:54:24 ]
Janeみたいに3ペイン表示ってQtデザイナで作れますか?

336 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 06:46:31 ]
ok

337 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 21:03:11 ]
質問失礼します。
関数内で
void func(void)
{
QWizard wizard;
}
を使用するとメモリリークが発生します。
void func(void)
{
QDialog wizard;
}
を使用するとメモリリークが発生しません。

QWizardって呼ぶときとか終了する前にしないとだめな処理とか
あるのでしょうか?
環境は Qt 4.5.1 VisualStudio2008 Express
です。
メモリリークのチェック方法は、
#include <crtdbg.h>
をつかってます。



338 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 22:16:08 ]
>>335
QSplitterで縦に分割して、さらにQSplitterで横に分割すればできる。
QTDesignerでも可能

339 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 22:19:59 ]
>>337
本当に?
プログラマーの友 第八報:メモリリークと crtdbg.h
ttp://www7b.biglobe.ne.jp/~robe/pf/pf008.html
>この _CrtDumpMemoryLeaks ですが、この関数は正確には
>「この関数を呼んだ時点で開放されていないメモリの情報を表示する」関数です。
>たとえ main の最後に書いておいたとしても、
>cin などのグローバルオブジェクトで確保されたメモリは、
>まだデストラクタが呼ばれておらず開放されていないわけです。
>これまで検知してしまうので、
>メモリリークしていないにもかかわらずメモリリークしたと
>報告してしまうことがあります。
ここにあるような理由じゃないよね・・・?

340 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 23:01:24 ]
>>339
レスありがとうございます。
僕が使ったのは、
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
こっちのほうなので、影響はないぽいです。
使い方に問題がないのならば、
本当にメモリリークがあるぽいのかな?




341 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 01:07:08 ]
>>340
本当に >>337 だけで再現するの?
少なくとも >>337 だけじゃ実行できないよね?
実行できて問題が発生する最小限のコードを提示してもらわないと、
だれも君の手元のコードをデバッグできないよ。

342 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 05:06:12 ]
とりあえずサンプルソースを貼るなら
codepad
ttp://codepad.org/
ここに貼るのがオススメね。


343 名前:デフォルトの名無しさん [2009/06/23(火) 16:36:46 ]
>>327
JIS配列の場合のみね。
ことえりの環境設定で、¥をバックスラッシュとして扱うよう変更出来る。
ただし、この場合、¥マークを出したい場合はoption + yとなる。

344 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 22:12:59 ]
>>341
ごもっともです。
症状の発生する簡単なプログラムを作りました。


>>342
ありがとうございます。
使用させていただきます。

codepad.org/HoQtNsqw


もしかしたら、ライブラリのコンパイルをミスったとか
そんなことないですよね・・・(泣)
他の方も同じ症状が発生するのかどうかが知りたいです。


345 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 22:25:34 ]
コンパイルできてないのに
なんで実行できたんだろう

346 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 23:49:32 ]
>>345
いえいえw
部分的にコンパイル条件が変わってしまったのかなと思っただけです。
たぶん、そんなことは希少だと思うので、
ライブラリのコンパイルは成功してると思います。
Qtは初使用なので、コンパイルが失敗してたら
ライブラリが存在しないはず。

もしかしたらリンク先消えちゃうかもしれないので
張っておきます。

#include <windows.h>
#include <crtdbg.h>
#include <QtGui/QtGui>

int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hinst_prev, LPSTR cmdline, int nshow)
{
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_DEBUG | _CRTDBG_MODE_WNDW);
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);

QApplication app(::__argc, ::__argv);
QWizard wizard;

return (0);
}




347 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 00:15:07 ]
>>344
URLがQtだ
すげぇ

348 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 00:36:23 ]
>>346
そうじゃなくて

codepad.org/HoQtNsqw

コンパイルエラー出てるじゃん


349 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 00:40:51 ]
>>348
馬鹿?w

350 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 00:47:07 ]
いえいえw
ばかじゃなくて
うんこです



351 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 14:21:13 ]
>>347
> URLがQtだ
よく気付いたな。
すげぇ!

352 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 19:01:58 ]
ttp://www.qtsoftware.com/about/news/updates-to-qt-and-qt-creator-released
Qt 4.5.2 & Qt Creator 1.2 release!

353 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 22:10:59 ]
Qtでタイトルバーがないメインウィンドウって作れるの?
コマンドラインランチャ作ろうと思って調べたけど分からんかった…

354 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 22:17:45 ]
Ubuntu9.04 Qt4.5
1台のPCで書いたQtのプログラムを、別のUbuntuPCにプロジェクトごと
コピーしたんですが、
/usr/bin/ld: cannot find -lfreetype
collect2:ld はステータス1で終了しました
のエラーでとまります。
何が原因でしょうか?


355 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 22:28:05 ]
freetype のライブラリ が入ってない
ubuntu だと freetype-devel? とかいれればいいんでね


356 名前:353 mailto:sage [2009/06/25(木) 23:00:51 ]
ごめん、前スレにあったわ。Qt::FramelessWindowHintを使えばいいのね。

357 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 23:52:02 ]
QT4.5.2でてるよ。
QtCreator,MSアドインも。

358 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 20:41:27 ]
Windows上のQtCreator+MinGW+gccでは、
MSVC用に提供されてるlibファイルのリンクって出来ないですよね?


359 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 21:16:04 ]
mingwで吐いたLIBとVCで吐いたLIBのバイナリヘッダを見比べてみ

360 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 17:11:02 ]
リファレンスの訳をシコシコやってるんだけど
これ見てる人いるのかな
誰も見てなかったらモチベーションが続かない・・・



361 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 17:44:12 ]
つ アクセス解析


362 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 18:53:32 ]
qt.linux-life.net/4/doc/ja/index.html
これ?

363 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 20:57:29 ]
>>362
それそれ
今思えば自分もリファレンス読むとき本家の英語版読むんだから
やる必要はなさそうだね

364 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 22:00:03 ]
>>363
俺は今 急がしくて新しいのに挑戦できないのだが
今度 チャンスを見つけて
Qtに浮気しようかなと思っている。
別のスレで結構良い出来だと言われているんで。

そんな俺にとっては翻訳してくれる神がいると絶対うれしい。


365 名前:364 mailto:sage [2009/06/27(土) 22:04:13 ]
だからこうしてQtを使ったこともないのに
このスレをROM専で見学している。


366 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 22:37:41 ]
4.5.2コンパイルできないや

367 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 22:40:35 ]
>>366

どういうこった?

368 名前:367 mailto:sage [2009/06/28(日) 01:54:42 ]
QT 4.5.2をVS2008使ってビルドしてみたら

ttp://labs.trolltech.com/blogs/2009/06/25/qt-452-has-been-released/

≫ Posted by Thomas on Friday, June 26, 2009 @ 15:53
と同じ現象で、QWebkitのリンクエラーが発生した。

対処方法としては、
-no-webkit
を付ければいけるみたい。その代わり、Webkitが使用できなくなる。。。
だれか、解決できた人いる?

369 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 06:09:25 ]
QNetworkReplyHandler.hのmocに失敗してるみたいだね

これエラーメッセージ
>platform\network\qt\QNetworkReplyHandler.h(0): Warning: No relevant classes found. No output generated.

でもQNetworkReplyHandler.hは4.5.1と中身一緒だから原因はさっぱり

370 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 08:50:57 ]
>>364
つttp://calmlight.s2.zmx.jp/Qt4Note/qt4_note_top.html



371 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 10:44:34 ]
>>369
QT4.5.2からVS2008に変えたんだけど、QT4.5.1はVS2008で問題なくビルドとおった?
少なくともQT4.5.1をVS2005でビルドしたときは問題なくビルドとおったけど。

372 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 10:51:54 ]
>>371
VS2008そのものではないけれど、Windows SDKつかって win32-msvc2008 でコンパイルは 4.5.1 では問題なかった。
webkit もコンパイルできた。
4.5.2 はまだトライしてなかったのでわからないけれど。

373 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 11:26:04 ]
>>371
全く同じやり方で通った
さっき4.5.1に戻したから間違いない

374 名前:364 mailto:sage [2009/06/28(日) 13:32:43 ]
>>370
Qt4 Note
は分かりやすそうなんだけど、内容の正確さが結構心配だわ。
同じサイトの
C++ Note
ttp://calmlight.s2.zmx.jp/CppNote/cplusplus_note.html
この辺が今ひとつ怪しい。Qtの解説は大丈夫なのかと。

375 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 13:37:01 ]
>>373

Forumでも既に問題になっているね。
返信がないから、原因はいまだ不明。
ttp://labs.trolltech.com/forums/topic/859

とりあえず、webkitをビルドしないように、-no-webkit付けて
しのぐとするか。


376 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 14:25:09 ]
>>374
触りもしないでごたくばっかり並べてるお前みたいなカスよりもよほどマシ
目障りだから消えろクズ

377 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 14:38:21 ]
>>376
まあまあ、そんなすぐ発火するなよ。
ごたくってどの辺が?
残念だが消える気は無い。

378 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 20:30:32 ]
死ね

氏ねじゃなく死ね


379 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 20:38:57 ]
>>378
・・・。

タイ━━━━||Φ|(|゚|∀|゚|)|Φ||━━━━ホ!!!

380 名前:デフォルトの名無しさん [2009/06/28(日) 23:43:06 ]
>>374
英語のドキュメントを読めばいいじゃないの。
ソフトウェアを仕事や趣味にしているならば、英語のドキュメントを読んだ方が早く分かって楽しいですよ。



381 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 19:52:16 ]
最近Qt始めました
ネットワーク処理が良くわからんっ!


もう少し勉強しよう…

382 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 23:39:42 ]
>>380
同意ですな。
英語のマニュアルも読めないような奴が新しいことに手を出すな、って。

383 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 05:35:40 ]
そうやってすぐ排斥しようとするクセは直したほうがいいぞ
Unixコミュニティにありがちだけど

384 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 05:49:22 ]
自分の人生から英語を排斥してる人が
まずその排斥をやめろという話。

385 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 09:51:54 ]
説明文なんて単語の意味さえ分かればいいわけで、
機械翻訳でもOKさ。

386 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 09:57:56 ]
VS2008 Professionalでwebkitを含めて問題なく4.5.2をビルド出来たぞ。

387 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 10:22:36 ]
>>368に返信ついてるな

>Problem is in src/3rdparty/webkit/WebCore/tmp/moc/{debug,release}_shared/mocinclude.tmp
>which produced empty moc_QNetworkReplyHandler.cpp file.
>
>Just remove it and then rebuild QtWebkit again.

だそうだ

388 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 12:56:14 ]
>>384
ムチャ言うなよw

389 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 13:15:26 ]
無茶なのかよw

390 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 13:15:31 ]
中高レベルの英語すら他人に頼る奴がプログラミングに挑戦する方が無茶だよ



391 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 15:19:15 ]
敷居を下げるためにも日本語のリファレンスはあったほうがいいと思うけどね

392 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 15:33:35 ]
俺は英語読めてすごい
まで読んだ

393 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 15:42:59 ]
読むだけなら馬鹿でもできるってことだろ
そんな真っ赤になるなよ

394 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 16:45:20 ]
「恐らくコイツは、英語ができる自分を凄いと思っているのだろう」
という発想自体があり得ないよね。どんだけ低学歴なのかと。

395 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 18:32:14 ]
日本語リファレンスがあるとユーザーが増えるのは確かなわけで
ユーザーが増えないとQtの先行きも不安だから
英語で読んでる俺も和訳を応援したいと思いつつ

「じゃあお前も手伝え」とか言われたら面倒だし
しかも手伝ったら「お前和訳へたくそ」とか「なにこの超訳wwこいつ読めてねえwww」とか言われて
ショックで立ち直れなくなったらイヤなので
あえてここは「そのくらい英語で読めよwww」と煽られる前に煽っておく

396 名前:デフォルトの名無しさん [2009/06/30(火) 19:56:13 ]
>>391
ざっと数えてみると2万ページ近く。翻訳会社に出すと1億。
162億も出して買収したNokiaに是非翻訳してもらいたい。


397 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 20:39:41 ]
try{
MainWindow w;
w.show();
return a.exec();
}
catch(char* err)
{
QMessageBox::warning(0, "System Error", err, QMessageBox::Ok);
}
としたら、エラー時突然死してしまいます。
Qtの場合catchはどこで取ればいいんでしょうか?


398 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 21:54:59 ]
pushButtonのクリックでは、SLOTを動かせるけど
pushButtonにフォーカスがあるときEnterでSLOTを動かすには?


399 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 00:18:21 ]
>>397
Qt自体は例外を使ってないから、自分でしっかりエラー処理しろ。

400 名前:デフォルトの名無しさん [2009/07/01(水) 02:24:23 ]
>>398
多分
pushButton->setAutoDefault(true);



401 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 03:48:49 ]
>>335
それが正解

402 名前:397 mailto:sage [2009/07/01(水) 11:01:33 ]
>>399
了解


403 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 20:12:09 ]
>>400
できまいした。ありがとう


404 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:46:51 ]
I got it!

405 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:08:09 ]
>>387
おお、VS2008でQtWebkitのビルドが上手くいった。

公式サイト以外で、海外サイト(英語)でもいいんだけど、
QTのTipsみたいなのを纏めてる所って知ってる?

QTDemoのソースを参考にすれば、大抵のことはわかるんだけど、
纏まった資料としてどこかにないかなと。
もし無いようなら、wikiでも作って管理しようかなぁなんて思ってみたけど。

406 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 01:14:25 ]
今の段階ではLinux+GCC+Qtは採用する価値なしと判断しかけている。
なんとかWindows+VCの方向で解決したい。


407 名前:デフォルトの名無しさん [2009/07/02(木) 05:41:51 ]
>>406
その理由は?

408 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 06:20:45 ]
>>406
なぜ?

409 名前:デフォルトの名無しさん [2009/07/02(木) 09:53:08 ]
>>405
ここはどうですか。
www.qtcentre.org/
www.qtforum.org/

410 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 09:59:47 ]
>>406
mingw は ?



411 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 20:52:02 ]
Qt4.5
ItemViewとItemWidgetはどう違うの?


412 名前:デフォルトの名無しさん [2009/07/02(木) 23:26:45 ]
>>411
Q{List,Table,Tree}ViewとQ{List,Table,Tree}Widgetの違いのことですか。

413 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 23:32:44 ]
>411
Q*ViewはQ*Modelと対で使う。Q*WidgetはQt3以前のアイテムベース。
リファレンスのModel/View Programmingくらい読んでおけ。

414 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 00:40:40 ]
>>410
pc12.2ch.net/test/read.cgi/tech/1221233882/

415 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 00:59:57 ]
>>414
>>410じゃないが、おまいさんは何が言いたいのだ

416 名前:デフォルトの名無しさん [2009/07/03(金) 09:03:29 ]
>>412
そうだったらQ{LIst,Table,Tree}Widgetは、最初は簡単に使えます。
しかし、拡張は低いです。例えば、 内部に独自モデルを抱えていて
差替えができないので、機能を追加できなくなって行き詰まります
だから、最初からQ{List,Table,Tree}Viewを使うようにした方がよいです。

Qt4になったときにQ*Widgetを入れなければ後で困ることは減ったで
しょう。

417 名前:411 mailto:sage [2009/07/03(金) 09:32:34 ]
>>416
>>413
そうか、View勉強します
ありがとう

418 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 11:25:25 ]
Windowsの、メッセージループ見たいにQtのイベント監視ルーチンを修正することはできますか?
具体的には、シリアルポートの着信を監視したいんだけど、今はタイマーイベントで
見にいってるんですが。
Qtのイベント監視ルーチンに、ポート監視ルーチンを追加できないかと


419 名前:デフォルトの名無しさん [2009/07/03(金) 12:53:35 ]
>>418
カスタムなイベントをハンドリングしたいということですね。
それならば、イベントフィルターを使えば可能です。
参考:doc.qtsoftware.com/4.5/eventsandfilters.html


420 名前:デフォルトの名無しさん [2009/07/03(金) 12:55:16 ]
>>418
Windowsでシリアルポートならこれを見てみてはどうですか。
sourceforge.net/projects/qextserialport/



421 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 12:55:28 ]
>>416
日本語で桶

422 名前:419 [2009/07/03(金) 12:57:58 ]
>>419
QObject::event()をオーバーライドする方法もあります。
同様に419の参考に書いてあります。

423 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 13:41:41 ]
>>421
オレも云いたかったが、親切心を無下にできんと思って触れなかったのに
貴様KYだろ

424 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 18:07:15 ]
Widgetがシングルクリックされた時だけ処理を実行したいのですが、
ダブルクリックでないことを確認するにはどうすればいいのでしょうか?

425 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 00:28:13 ]
>>421
自動翻訳か何かを使ってわざわざ書き込んでくれている外人さんと予想したが

426 名前:デフォルトの名無しさん [2009/07/04(土) 04:17:51 ]
>>424
こちらの環境では、ダブルクリックをしたときは、mousePressEventが発生し、
さらにmouseDoubleClickEventが発生しているので、そちらもその状況にあると仮定。
まずタイマーを作り、シングルクリックイベントハンドラー内でそのタイマーをスタートさせ、
ダブルクリックの時間間隔より少し大きめの時間がたったときにシグナルを発するようにする。
このシグナルにハンドラーとなる別のスロットを接続する。
そしてその中で、ダブルクリックイベントが発生していないか確かめてから
シングルクリックに対する処理を実行すればよい。

427 名前:デフォルトの名無しさん [2009/07/04(土) 04:19:42 ]
426つづき

実装例
(ヘッダーファイル.h)
class QTimer;
//...

// データメンバー
QTimer* m_Timer;
bool m_IsDoubleClick;

428 名前:デフォルトの名無しさん [2009/07/04(土) 04:21:58 ]
426つづき

(実装ファイル.cpp)
#include <QMouseEvent>
#include <QApplication>
#include <QTimer>

// コンストラクターなどで
m_Timer = new QTimer(this);
m_IsDoubleClick = false;
m_Timer->setInterval(qApp->doubleClickInterval() + 10);
connect(m_Timer, SIGNAL(timeout()), this, SLOT(handleSingleClick()));

429 名前:デフォルトの名無しさん [2009/07/04(土) 04:22:46 ]
426つづき

void MainWindow::mousePressEvent(QMouseEvent* event) // オーバーライド
{
m_IsDoubleClick = false; // ダブルクリックではないと仮定する。
m_Timer->start();
}

void MainWindow::mouseDoubleClickEvent(QMouseEvent* event) // オーバーライド
{
m_Timer->stop();
m_IsDoubleClick = true;
// ここにダブルクリックのときの処理を書く。
}

// スロット定義
void MainWindow::handleSingleClick()
{
if(!m_IsDoubleClick) {
m_Timer->stop();
// ここにシングルクリックのときの処理を書く。
}
}

もっといい実装方法があるかもしれない。
なぜか少しもたつく。

430 名前:デフォルトの名無しさん [2009/07/04(土) 04:47:19 ]
>>425
Bingo!




431 名前:デフォルトの名無しさん [2009/07/04(土) 04:47:26 ]
>>429
訂正
プログラム実行中にユーザがダブルクリックの間隔を変える可能性があるので、
mousePressEvent()内でタイマーをスタートする前に
m_Timer->setInterval(qApp->doubleClickInterval() + 10);
を実行したほうがいいかも。

432 名前:デフォルトの名無しさん [2009/07/04(土) 05:17:47 ]
>>426
427 428 429 431
ごめん。mouseReleaseEventに対応していなかった。

433 名前:デフォルトの名無しさん [2009/07/04(土) 11:45:59 ]
>>429
>なぜか少しもたつく
ダブルクリック間隔よりも長く、シングルクリックでの動作が待たされるため、
シングルクリック操作時の動作がぎくしゃくしてしまいます。
従って、シングルクリックのときにのみ処理させることはできません。

416 の外人です。日本語を勉強しました。よくなったでしょうか。

434 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 11:50:58 ]
シングルクリックと仮定して動作して、ダブルクリックだったら取り消すって設計にできればそっちの方がいいね
実際そういう実装方法は多いと思う

435 名前:デフォルトの名無しさん [2009/07/04(土) 12:01:34 ]
>>434
>シングルクリックと仮定して動作して、ダブルクリックだったら取り消すって設計にできればそっちの方がいいね
でもそれだと、ダブルクリックだけ取得したいときに、さきにシングルクリックの処理が実行されてしまうのでは?


436 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 12:05:48 ]
QSystemTrayIconはシングルクリックかダブルクリックかのイベントを
区別して渡してくれるんだけど、あれってWindowsやDEからのイベント
だからなのかな?

437 名前:435 [2009/07/04(土) 12:22:16 ]
>>435
取り消します。
常に、ダブルクリックを無視するのではなく、そういう状況の時だけ無視するということですね。


438 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 12:49:07 ]
そもそもシングルクリックとダブルクリックで全く挙動が違うUIは
作りとしてマズいんじゃないか?人間は間違うものだし。
Windowsのexplorerにしても、
シングルクリック: 選択
ダブルクリック:(選択後に)実行
という一連の流れになってる。

439 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 12:54:28 ]
単純にダブルクリックイベントは無効にして
前回のシングルクリックからの間隔を判定して
動作を分けたらいいんでね?

440 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 12:56:09 ]
>>439が一番妥当だろうな



441 名前:デフォルトの名無しさん [2009/07/04(土) 12:59:22 ]
>>439
シングルクリックのときだけ処理をさせようとすると、
シングルクリックがもたついた動作になるんじゃないの。

442 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 13:02:11 ]
>>426のは、
ダブルクリックイベントは有効にしておいて、
シングルクリックイベント側で、ダブルクリックと同等のものを作り
ダブルクリックと思われる間隔だったらダブルクリックイベントに渡してる

というものじゃないの?
そりゃもたつくとは思う

443 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 13:04:14 ]
>>441
ダブルクリック時にシングルクリックイベントが発生しないような
APIを使っていない限り、それは必然ではないか?

444 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 13:09:12 ]
>>443
そのAPIの中でダブルクリック待ち受け時間終了までシングルクリックの
イベントの発生を遅らせる必要があるから結局同じことだと思う。

445 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 13:25:50 ]
>>439ってmouseDoubleClickEvent使うのと全く一緒じゃないのか?

446 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 13:28:10 ]
>>445
ダブルクリックイベント発生した際、
シングルクリックイベントを取り消せるなら、ね

447 名前:デフォルトの名無しさん [2009/07/04(土) 13:33:07 ]
>>442
シングルクリックでコントロールキーが押されていたら、シングルクリックの処理をする。
ダブルクリックのときにコントロールキーが押されていたら何もしない、
コントロールキーが押されていなかったらダブルクリックの処理をする。
こんなようにしてもたつきを避けた方がよいのでないでしょうか。

448 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 13:37:19 ]
>>446
ダブルクリックした場合、mouseDoubleClickEventがオーバーライドされてれば
mousePressEvent
mouseDoubleClickEvent
の順で呼び出される。

オーバーライドされていなければ
mousePressEvent
mousePressEvent
と呼び出されるだけだからmousePressEventで分けるのは無意味では?

449 名前:デフォルトの名無しさん [2009/07/04(土) 13:43:53 ]
状況1:シングルクリックイベントだけ処理したいとき
状況2:ダブルクリックイベントだけ処理したいとき
状況3:シングルクリックとダブルクリックの両方に対してそれぞれの処理をしたいとき

状況1のとき
ダブルクリックイベントを無視。

状況2のとき
シングルクリックイベントを無視。

状況3のとき
どうあがこうとダブルクリックが発生する時間だけ待たないと、
最初のクリック時にダブルクリックが発生するか判断できない。
よって、このときはどうしてもシングルクリックに対する処理は遅れる。

よって、状況1と状況3があり、シングルクリックに対して処理を遅らせることができないときは、
それぞれの状況に合わせて処理を切り替えるしかない。
と思うけどあってる?


450 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 14:20:47 ]
>>449
だね

で、
>シングルクリックに対して処理を遅らせることができないときは、
>それぞれの状況に合わせて処理を切り替えるしかない。
これは>>447の案

>>439
シングルクリックイベントの処理は
1回目クリックで一定間隔待機、
2回目クリックが一定間隔内に来たらダブルクリックの処理
一定間隔過ぎても2回目クリックが来なければそのままシングルクリックの処理

>>426
毎回シングルクリックから時間計測し
ダブルクリックイベントと別にダブルクリックだったのか判定(2重判定?)
なのかな?

>>448
んー、いまいちよくわからない
解釈間違ってるかもしれないけど、
初回クリックがシングルなのか、ダブルのための1度目なのかそれで判定できる?



451 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 14:52:11 ]
多分、>>439>>448は単に実装方法の違いだけだよ

>>439は、
mousePressEventが呼び出されたらタイマースタート
timeout前にmousePressEventが再度呼ばれたらダブルクリック
timeoutしたらシングルクリック

>>448は、
mousePressEventが呼び出されたらタイマースタート
timeout前にmouseDoubleClickEventが呼ばれたらダブルクリック
timeoutしたらシングルクリック

どっちでも実装できると思うけど、前者の方が多少コードが複雑になるから、
わざわざmouseDoubleClickEventを外す必要はないって話だと思う
全然関係ないこと言ってたらゴメン

452 名前:デフォルトの名無しさん [2009/07/06(月) 01:22:27 ]
Skypeって昔Delphiで作ってるって話だったけどいつの間にかQt/C++に変わってたんだね

453 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 01:39:26 ]
かなり前からQtだったと思うが。

454 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 09:47:17 ]
QtCreater入れて試してみた
若干コンパイルが遅い気がしたんだけどこんなもんだっけ?

455 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 12:03:11 ]
SkypeのWindows版はまだDelphiじゃない?

456 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 14:25:55 ]
うちだと若干どころかはっきりと遅いんだけど

457 名前:デフォルトの名無しさん [2009/07/06(月) 15:28:40 ]
>>454
mocが実行されるからその分遅いとか?

458 名前:デフォルトの名無しさん [2009/07/06(月) 18:30:29 ]
ダブルクリックが必要なソフトってエクスプローラ以外に何かあったっけ?

459 名前:デフォルトの名無しさん [2009/07/06(月) 19:01:01 ]
>>458
ゲームとか?


460 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 19:08:15 ]
どちらにしてもダブルクリックの場合はシングルクリックの処理をした後
ダブルクリックの処理をしてるよな



461 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 19:13:44 ]
何かしら一覧表示のできるソフトはシングルクリックで選択、ダブルクリックで操作ってのが多いね
マルチメディアプレイヤーのプレイリストとか、エクセルとか

462 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 19:19:39 ]
俺も昔、シングルクリックとダブルクリックの処理をわけたいと思ったことがあったんだけど
何しようとしてたんだろう。今になると全然思い出せないから、発想がおかしかったんだろうな

463 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 00:30:27 ]
>>457
mocって一言で言って何?

464 名前:デフォルトの名無しさん [2009/07/07(火) 06:20:31 ]
>>463
Meta-Object Compplier

QtのQObjectクラス(Qtのウィジットなど)のためにメタオブジェクト情報を生成する。
標準C++に対しての、付加機能。
ソースをmocに一度通して機能を付加して、C++のコンパイラーが許容するC++コードを生成する。
Qt開発ではこのプロセスが余計に必要になる。
標準C++ではない拡張をしていることに対して拒否反応を示す人がいるけれど、
ライブラリーに依存している以上そのライブラリーの付加機能があろうとなかろうと
あまり問題ないような気がする。
個人的な意見だけど。

参考
qt.linux-life.net/4/doc/ja/object.html


465 名前:デフォルトの名無しさん [2009/07/07(火) 06:23:41 ]
>>464
>Qt開発ではこのプロセスが余計に必要になる。
Qt Creatorなどをつかっていれば(qmakeのお陰?)、mocを自動的に実行してくれるので
mocを意識しないで済む。

466 名前:デフォルトの名無しさん [2009/07/07(火) 06:53:53 ]
>>464
>Meta-Object Compplier
ごめん。typoした。
Meta-Object Compiler

467 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 06:57:13 ]
Qt Creatorコンパイル遅すぎる

468 名前:デフォルトの名無しさん [2009/07/07(火) 07:51:47 ]
>>467
moc,Qt, Qt Creatorなどをソースからビルドして最適化オプション指定すれば速くなるとか?
調べてないまま言っているけど。

469 名前:デフォルトの名無しさん [2009/07/07(火) 08:27:20 ]
>>467
どのコンパイル方法と比べてどれくらい遅いですか?
Qt Creatorそのものは、コンパイルのための外部処理を呼出しているのだから、
Qt Cretaorでコンパイルが遅いならば、Qt Creatorなしでもコンンパイルが遅いはず。


470 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 08:42:10 ]
逆にLinuxネイティブだともっと速いのだろうか



471 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 09:39:39 ]
Qt Creator はコンパイルの実行前にプロジェクトをチェックしてるので
(たぶん、進捗表示用)
コンパイルを開始するまでが大きなプロジェクトだと時間がかかるな。
コンパイルが始まってからは普通にmakeするのとあまり変わらないだろうけど。

472 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 12:10:29 ]
ダブルクリック、シングルクリックの話だけど、
なんでイベント-アクセプタを使用するの?
signal-slotじゃだめなの?
教えてください偉い人

473 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 12:24:34 ]
>>472
どっちも同じだから

474 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 13:32:28 ]
MOCレベルでの実装が同じ、という意味なの??

475 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 13:43:34 ]
同じだったら統一されてると思う

476 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 14:22:52 ]
>>472
signal-slot は point-to-point な配線だ。親子関係を無視する。
それに比べ、イベントはどこかで捕まるまで階層構造を伝播する。

たとえば、ダイアログボックスの中にラベルがあったとき、ラベル上で
ダブルクリックすると、ラベルがダブルクリックを捕まえない限りは
自動で親のダイアログボックスにダブルクリックイベントが飛ぶ。

477 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:01:03 ]
VC2005で勉強中ですが以下の点を確認させてください。
・Qtデザイナーで任意のウィジェットのシグナルと
 QDialog 内に新規作成したスロット名をコネクトしても
 自動的にダイアログ.h とダイアログ.cpp 内に同じ名前のスロットは
 作成してくれない。ので、自分で関数名から記述する必要がある。
よろしく

478 名前:デフォルトの名無しさん [2009/07/08(水) 07:24:02 ]
>>477
Qt Creatorを使えば、.hと.cppにスロットが自動的に作成されます。


479 名前:472 mailto:sage [2009/07/08(水) 11:10:56 ]
なるほど。
イベントだとクラスの階層構造を辿っていくのですね。
signal-slotだと、親なら親、子なら子でインスタンスを指定する、と。

・signal-slotの方がセーフティー
・イベントの方が実装として適している
・どちらでもあまり違いはない
の3つ場面がありうるということだと理解しました。

480 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 13:23:55 ]
遡上の途中でイベントを握り潰すケースもある



481 名前:デフォルトの名無しさん [2009/07/08(水) 14:38:43 ]
EclipseつかってQtアプリ開発してる人っていらっしゃいます?

482 名前:デフォルトの名無しさん [2009/07/08(水) 15:56:56 ]
Qt用のプラグイン追加すれば、GUIデザインも出きるし、
スケルトンやMakeファイルも自動生成されるから始めて使ったが、簡単だったよ。

483 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 21:58:10 ]
QtCreaterあるのにわざわざEclipse使うメリットって?

484 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 22:00:55 ]
Javaマンセー





そんなやつがQt使うメリットないか

485 名前:デフォルトの名無しさん [2009/07/08(水) 22:42:38 ]
作成されたスケルトン見ると、C++なんだけどな。

486 名前:477 mailto:sage [2009/07/08(水) 22:55:25 ]
>>478
ありがとさんです。

487 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:43:15 ]
>>483
eclipseって激重なのにね

488 名前:デフォルトの名無しさん [2009/07/09(木) 00:44:44 ]
そんなに遅いPC使って恥ずかしくない?

489 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:50:01 ]
eclipse使って無いけど使いたい気持ちは分るぞ
使い慣れた環境とかプラグインとかは重要だろ
俺もQtCreator使わずにEmacs使ってるし

490 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:55:42 ]
俺はvi派だったけど
QtCreatorにFakeVimがついてて飛びついた



けど、QtDesigner使わずゴリゴリ書いちゃう派だから
あんまり意味のないことに気がついた



491 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 07:00:12 ]
>>490
FakeVimってなぁに?


492 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 07:30:06 ]
>>491
viエディタと同じキー操作で編集できるようになる機能。

493 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 07:51:45 ]
>>492
vimはviを拡張したもの。

494 名前:デフォルトの名無しさん [2009/07/09(木) 14:22:44 ]
ユーザとのフロントエンドにQtを使い、実装するロジックの作成に複数の言語を適材適所で使い分けて
一つのプロジェクトで管理するようなことが出来そうだからEclipseを選んでみた。
開発に使えるプラットホームも選ばないし。

495 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:25:45 ]
>>494
で、それは達成出来たのか?

496 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:26:27 ]
それは聞いちゃダメです><

497 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 14:44:27 ]
俺たちってなんか、それなりにフォーエバーだよな。

498 名前:デフォルトの名無しさん [2009/07/09(木) 14:45:22 ]
一緒にすんな

499 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 22:06:54 ]
オープンソースのライセンスってソース開示しなかったらなんかペナルティあるの?

500 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 22:13:01 ]
>>499
>オープンソースのライセンス
もうちょっと勉強しようぜハニー!
Category:オープンソースライセンス - Wikipedia
ttp://ja.wikipedia.org/wiki/Category:%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9

面白いのは以下のものかな。
GNU General Public License - Wikipedia
ttp://ja.wikipedia.org/wiki/GNU_General_Public_License
GNU Lesser General Public License - Wikipedia
ttp://ja.wikipedia.org/wiki/GNU_Lesser_General_Public_License
BSDライセンス - Wikipedia
ttp://ja.wikipedia.org/wiki/BSD%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9
NYSL - Wikipedia
ttp://ja.wikipedia.org/wiki/NYSL




501 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 22:15:29 ]
おまい優しい奴だな

502 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 22:22:24 ]
>>499
開示義務のあるやつはな。
GPLモノだとときどきFSFに訴訟されてるケースがある。


503 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 23:28:47 ]
>>499
逆のイメージも想像した方がいいかもな。
自分がオープンソースにしたコードが自分の自由にならなくなった場合とか。
作った奴がライセンスを決められる。使う奴はそれに従う。
最終的にはそういったこと。

504 名前:デフォルトの名無しさん [2009/07/10(金) 00:04:35 ]
でも、このライブラリ使ったとか言わなくてもバレるものなの?

505 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 00:20:53 ]
オプソ陣営にはバイナリハッカー部隊がいて、日夜いろいろなソフトを解析比較して
GPL違反してる奴を探してるからバレる

506 名前:デフォルトの名無しさん [2009/07/10(金) 00:30:19 ]
なるほど、謎が解けたよ
ありがと

507 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 07:06:03 ]
>>505
> バイナリハッカー部隊
フイタ。
その知識を別の方面に使ってくれれば。。。

508 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 08:09:52 ]
ていうかか… strings と grep でばれちゃうようなことしてるやつが見つかっちゃうんよ…



509 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 10:20:24 ]
同じバグがあって見付かることも多いみたいだけどな

510 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 10:55:44 ]
本気で隠そうとしたら多分見つからないだろうね。
見つかってないライセンス違反もかなり多いと思う。
それこそ関数ごとにアセンブリコード比較したら分かる可能性もあるが
最初からそこまでやるような暇人はいないと思う。



511 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 12:44:08 ]
そもそも、適当なうpロダにバイナリだけ置いてこういう掲示板に貼って配布するだけでもライセンス違反なの?

ソース付きならセーフ?

512 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 13:07:49 ]
スレチもいいところだな
他行けよ

513 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 21:47:07 ]
>>511
ライセンスによるんじゃない?
ライセンス読まないとわからね。


514 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 22:12:00 ]
LGPL
っつーかスレち

515 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 22:24:45 ]
実際に作ったもののうpを2chに晒してみる事を想定するとライセンス関係がちょっと気になったんだ
スレチスマン

516 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 22:47:14 ]
それにしてもgtkスレ過疎ってるな

517 名前:デフォルトの名無しさん [2009/07/11(土) 11:07:06 ]
>>516
www.google.co.jp/trends?q=Qt
www.google.co.jp/trends?q=gtk

518 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 11:17:27 ]
そりゃgtkは面倒くさいからな。

519 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 13:34:58 ]
4.5.1から4.5.2へのマイナーバージョンアップは
手動で古い方アンインストールしてから新しい方インストールするんですか?


520 名前:デフォルトの名無しさん [2009/07/11(土) 20:24:17 ]
>>519
アップデートというのはないですね。Mac OS X SDKは、uninstallのスクリプトが入っています。
WindowsやLinuxはどうなんでしょう。



521 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 20:40:51 ]
>>520
Windows、LinuxともSDKには、アンインストーラーが入っています。

522 名前:519 mailto:sage [2009/07/12(日) 00:35:12 ]
>>520 >>521
ありがとうございます。アンインストールしてからインストールします。

523 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 01:25:27 ]
Constants.h

public:
static const QString str0 = "str0";
static const QString str1 = "str1";

のように各種定数を集めたクラスを作成したいのですが、このような宣言は許されないのでしょうか? 型がintやdoubleの場合はコンパイルできるのですが、QStringになるとエラーを吐かれます。
何か解決方法があればよろしくお願いしますm(_ _)m

524 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 01:57:11 ]
>>523
定数ならcharでいいんじゃないか

525 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 02:03:50 ]
>>523
おいおい、Qt関係ないぞ。C++の基本だろ?
整数型以外のメンバをクラス定義内で初期化するのは不可能。
doubleもエラーになるはずだが。
以下のように、メンバの定義時に初期化すべし。

const QString Constants::str0 = "str0";

526 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 07:48:04 ]
>>523
定数を定義したいんだったら

#define HOGE "str0"

とかすれば、いいんじゃないでしょうか?

527 名前:デフォルトの名無しさん [2009/07/13(月) 08:13:57 ]
>>526
プリプロセッサによる置き換えは、エラーのとき分かりにくいから定数にしておいたほうがいいのでは。


528 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 08:27:15 ]
>>527
訂正
○constなオブジェクト
×定数

529 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 08:34:51 ]
>>525から読み取れるけど、補足すると
const QString Constants::str0 = "str0";
を実装ファイル(.cpp)に書けばよい。

530 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 09:35:35 ]
>doubleもエラーになるはずだが。




531 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 13:04:36 ]
>>530
馬鹿か?日本語使えないならレスするなよ

532 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 13:38:48 ]
最小化やタスクトレイに収納しても使える、グローバルホットキーの設定は
一体、どこの関数でやったらいいのでしょうか?

533 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 16:30:09 ]
すみません教えてください。
QTextEdit使って、ログ表示しようとしてます。
append()使うと、最終行に追加していけるんですが、必ず改行が追加されてしまうので、
代わりに、moveCursor(QTextCursor::End)でカーソルを最終行に持っていき、
insertPlainText()をする方法にしました。それ自体はうまくいきました。

ですが、スクロールバーが最終行に移動しないので、関数呼び出して移動させようと思うのですが、
そういう関数が見当たりません。どなたかご存知ないでしょうか。

また、よりよい方法がありましたらご教授お願いします。


534 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 19:19:51 ]
>>532
Qtライブラリには無いのかな?

Qt Centreのスレッド「Grabbing a key in X11」の中のリンクより
LibQxtライブラリのQxtGlobalShortcutが使えるみたい。
doc.libqxt.org/latest/classQxtGlobalShortcut.html

でも、プラットフォーム独自のショートカットでアプリケーションをアクティブに
してもらってもいいような気がするんだけど、それだとダメなの?


535 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 20:30:32 ]
>>533
#include <QScrollBar>
QScrollBar* vScrollBar = m_Editor->verticalScrollBar();
vScrollBar->setSliderPosition(vScrollBar->maximum());

536 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 22:03:21 ]
>>534
ありがとうございます。 頑張ってみます。
わざわざアクティブにするのは、色々面倒だったので。

537 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 01:11:00 ]
ttp://labs.trolltech.com/blogs/2009/07/03/win9xme-no-more/
Windows 9x 終了のお知らせ

538 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 01:21:31 ]
仮りに9xいまでも使ってるとして
HDD寿命で壊れないか心配になったりしないのだろうか

539 名前:デフォルトの名無しさん [2009/07/14(火) 06:59:33 ]
>>538
新しいHDDにインストールすればいい話では。

540 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 17:08:38 ]
新しくインストールするのにわざわざ(r



541 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 18:05:29 ]
まあそんなこんなで実際に使ってる人が少ないからサポートから外される訳で

542 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 20:37:31 ]
Qtで録音関係のライブラリ?API?ってないのかな


543 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 22:11:18 ]
y

544 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 00:48:35 ]
WindowsでQt Creatorの埋め込みデザイナにカスタムウィジェットを組み込みたいと思い
Qt Creatorを使ってQt\examples\designer\customwidgetpluginをビルドし
Qt\bin\designerディレクトリに入れてみたんですが、デザイナがロードしてくれません。
Qt DesignerではちゃんとQt\qt\plugins\designerに入れれば使うことができます。

調べたところ、Qt CreatorのプラグインはVCで作らないとダメだというような情報があり
実際に試してVCで作ったプラグインならちゃんとQt Creatorのデザイナでも認識されるのは確認したんですが
VCではなくQt Creatorで作ったプラグインをQt Creatorで認識させるのって無理なんですかね?

使っているQt CreatorとQtはqt-sdk-win-opensource-2009.03.1.exeに入っているものです。

545 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 07:03:55 ]
>>542
サウンドを再生するためのPhononならあるけど、
録音関係はまだ実装されていないと思います。

546 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 16:25:56 ]
一瞬QuivkTimeの方のQtかと思ったw
サウンド関係はJuceが充実しているね
www.rawmaterialsoftware.com/juce/

547 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 15:09:31 ]
QtCreator 1.2.1
日本語化されちゃってるよ。びっくりした。

548 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 16:52:23 ]
日本語化は1.2からじゃなかったっけ

549 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 17:21:43 ]
ローカルに保存されている画像ファイルの画像の大きさだけ知りたいのですが、
QImage::sizeよりもメモリ消費量の少ない方法はありますか?

550 名前:549 mailto:sage [2009/07/16(木) 20:59:10 ]
自己解決しました
QImageReader::sizeならファイルサイズ分しか使いませんでした



551 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 21:31:10 ]
>>550
模範的な自決ありがとう。
後を行く人の助けになる。

552 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 21:52:09 ]
他の質問スレの連中に549の爪の垢でも飲ませたいもんだ。

553 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 09:18:10 ]
心の底から同意する

554 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 23:51:15 ]
qt 4.5.2は、mingwのgcc 4.4(g++)でビルドできますか?

555 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 02:00:43 ]
QPixmapをstaticで宣言するとクラッシュするようなのですが、何か解決策はありませんか?


556 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 02:00:49 ]
できるよ

557 名前:デフォルトの名無しさん [2009/07/19(日) 09:50:00 ]
>>555
どのように使っていますか。staticなQPixmapに画像をロードして、QLabelで表示した場合では、
クラッシュせずにQLabelに画像が表示されるので、staticだからというだけでは落ちません。

558 名前:555 [2009/07/19(日) 20:09:05 ]
>>557
すいません、宣言ではなく定義でした。
以下の様にstaticでQPixmapを宣言した後定義を行うと、クラッシュします。

icons.h
public:
static QPixmap icon;

icons.cpp
QPixmap icons::icon = QPixmap();

いくつかのアイコンを起動時に読み込んで以後はそれを使用したいのですが・・・何か解決方法があればよろしくお願いします。


559 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 20:12:12 ]
>>558
どこで落ちるかデバッガで確認したの?

560 名前:555 mailto:sage [2009/07/19(日) 20:39:43 ]

>>559
icons.cpp
QPixmap icons::icon = QPixmap();
で落ちるようです。main()に入る前に落ちるのでデバッガで確認はできていませんが、初期化を行わない場合はmain()が実行されます。QPixmapのコンストラクタをデバッグする方法ってありますか? Qt Creatorを使用しています。



561 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 20:52:47 ]
>>560
Linux上(Qt-4.5.0)で以下のコードを実行してみた。

% cat qpixmap.cpp
#include <QtGui/QPixmap>

class Foo {
static QPixmap pixmap;
};

QPixmap Foo::pixmap = QPixmap();
int main() {}

$ g++ qpixmap.cpp -I/usr/include/qt4 -lQtGui
$ ./a.out
QPixmap: Must construct a QApplication before a QPaintDevice
[2] 12778 abort ./a.out

QApplicationをインスタンス化した後じゃないと駄目だね。
てことで、iconsクラスをシングルトン化したら?

562 名前:555 mailto:sage [2009/07/19(日) 21:16:54 ]
>>561
QPaintDevice系のクラスはQApplicationをインスタンス化した後に構築しなければならないのですね。原因がわかりました。
以下のようにシングルトンパターンを構成することで解決できました。ありがとうございました。

icons.h
private:
icons();

public:
static icons getIcons();

icons.cpp
icons getIcons(){
static icons icons;
return(icons);
}

563 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 21:23:16 ]
>>562
return(icons);
ここで値コピーされてるのでシングルトンになっていないのでは?

564 名前:555 mailto:sage [2009/07/19(日) 21:47:31 ]
>>563
iconsにstaticキーワードを付与してるので問題ないと思うのですが・・・間違ってますか?
C++をいじるのは初めてなんで自信ないです(^_^;)

565 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 22:08:11 ]
>>564
icons& getIcons() {...}
として参照を返すようにしないとオブジェクトがコピーされるよ。
最低Effective C++は読んだ方がいいよ。

566 名前:デフォルトの名無しさん [2009/07/19(日) 22:15:34 ]
>>565
参照返しちゃだめですよ。QPixmapをnewするのもだめ。QPIxmapは、reference count付きのimplicit sharedですから。
Effective C++に書かれているように、こういうクラスはコピーされるように使います。

567 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 22:46:23 ]
>>566
単純にシングルトンは駄目、と言えばいい話だろ?

568 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 22:55:52 ]
つまり>>562のコードはシングルトンではないけどQt的には推奨、ということ。

569 名前:デフォルトの名無しさん [2009/07/20(月) 03:31:15 ]
>>567
違うよ。

570 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 04:02:11 ]
>>569
シングルトンを使えないのは事実。
それに加えて値渡ししか使ってはいけないというだけ。



571 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 08:12:57 ]
>>564
Javaの人なんだね。

自動変数とポインタを見抜けないと(C++を使うのは)難しい

572 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 20:44:57 ]
>>571
>自動変数とポインタを見抜けないと(C++を使うのは)難しい
それが見抜けない人は、
C++に限らずもはや何だって難しいと思うんだぜ。


573 名前:デフォルトの名無しさん [2009/07/20(月) 20:48:43 ]
なこたーない。

C++のガラパゴス仕様の異常性は有名なんだから。

574 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 20:49:58 ]
>>573
それが見抜けない(初心者という意味じゃなく、頭脳という意味で)レベルの人の場合、
いくらやさしい言語でもやっぱ厳しいんじゃないかと思ったのだが。

ま、いいや。

575 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 21:32:02 ]
in Japanese please

576 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 21:40:15 ]
Windows用のVisual Studio add-inについて教えてください。
Qtの商用ライセンスを持っていない場合、add-inは使用してもいいの?

What is the Visual Studio add-in?
Answer
We want to enable everyone who downloads Qt from our website
to have the option of using Qt together with Visual Studio,
regardless of whether they choose to use a commercial evaluation version, the GPL or the LGPL.
The add-in is designed to serve this purpose.
Qt commercial license holders on Windows get access to a full Visual Studio Integration.
この最後の一行は、商用ライセンスを持っていないと使用できないといっているの?

577 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 21:43:18 ]
>>Qt commercial license holders on Windows get access to a full Visual Studio Integration.
商用ライセンス持ってる人はもっといいアドインがあるよ ってこと
今公開されてるVisual Studio Addin 1.01はLGPLで使用可能だよ

578 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 21:44:08 ]
>>576のつづき
リファレンスのInstalling Qt on Windowsより引用。
Open Source Versions of Qt is not officially supported for use with any version of Visual Studio.
Integration with Visual Studio is available as part of the Qt Commercial Editions.
これもどう判断すればいいの?

579 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 22:20:22 ]
>>578
訳せばそのままだが
* オープンソースバージョンのQtは公式にはVisual Studioでの使用をサポートしません。
  ( Visual Studio でビルドしたバイナリをサポートしてほしい場合は商用版を使え )
* Visual Studio Integration は商用版Qtの一部として提供されます。

Visual Studio Integration と Visual Studio add-in は別物。

580 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 22:23:05 ]
>>Open Source Versions of Qt is not officially supported for use with any version of Visual Studio.
>>Integration with Visual Studio is available as part of the Qt Commercial Editions.
ここで言ってるIntegrationって最近リリースされたVisual Studio Addinとは違うんじゃないのかな。
自分は>>576だけを読んで大丈夫だと思って使ってるんだけど
もしかしたら違うのかもしれない



581 名前:デフォルトの名無しさん [2009/07/20(月) 22:26:45 ]
>>576
フリーの限定機能add-inではなく、フル機能Integrationは、商用版ユーザのみが使うことができるということです。

>>578
オープンソース版のQtは、Visual Studioで使えるかもしれないけれど正式サポートはしていません。
そして、Integration with Visual Studio (フリーのadd-inでないもの)は、商用版だけで利用可能です。ということ。


582 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 22:32:56 ]
>>577,579,580
Integrationとadd-inの区別がついていませんでした。
お騒がせしました。
ありがとうございました。

583 名前:デフォルトの名無しさん [2009/07/20(月) 22:35:56 ]
>>581
お騒がせしました。
ありがとうございました。

584 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 22:55:44 ]
>>566
参照返しにして、デフォルトコンストラクタとコピーコンストラクタ、
それとコピー演算子をprivateにするのが、Singletonの普通の実装なんじゃない?

まあ、それにしてもQPixmapはコピーで返さないといけないけど。

>>570
Singletonが使えないってソースどこ?

585 名前:584 mailto:sage [2009/07/20(月) 23:00:50 ]
書いてから気がついたけど、>>570のSingletonが使えないってのは、
QPixmap自体のインスタンスを1つだけにするのが無理ってことか。

586 名前:デフォルトの名無しさん [2009/07/21(火) 06:41:37 ]
ひとつにしなくてよいように作られているのだから。

587 名前:デフォルトの名無しさん [2009/07/21(火) 21:07:46 ]
>>571
Javaな人は、99.9999999%がCOBOLな人と同じだからね。

588 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 01:14:19 ]
nmakeが失敗してた
寝る

589 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 11:01:49 ]
>>582
2chで聞くより直接問い合わせたほうがいいんでない?

590 名前:576,582 mailto:sage [2009/07/22(水) 11:48:20 ]
>>589
Open Source LicenseでAdd-inが使用できるか知りたかったのです。
商用ライセンスは、持っていないのです。



591 名前:590 mailto:sage [2009/07/22(水) 11:52:06 ]
これくらいの質問ならQt Softwareに問い合わせてもいいんですかね。
その辺が判断できなくて。

592 名前:デフォルトの名無しさん [2009/07/26(日) 11:03:39 ]
ユーザーによってQToolBarがドラッグされて違うエリアに移ったとき、
どのエリアに移ったか知りたいのですが、
何か適当なシグナルやイベントハンドラーはありますか。


593 名前:592 [2009/07/26(日) 11:41:41 ]

自己解決しました。
ツールバーのmoveEvent()をハンドルし、QMainWindow::toolBarArea()
をコールするだけでした。

594 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 11:53:07 ]
>>593
またもや模範的な自決すばらしい。

595 名前:デフォルトの名無しさん [2009/07/26(日) 12:12:58 ]
QLineEditを縦向きにして配置したいのですが、できますか。

596 名前:デフォルトの名無しさん [2009/07/26(日) 13:39:05 ]
>>595
Graphics Viewでできます。

597 名前:595 [2009/07/26(日) 13:48:35 ]
>>596
ありがとうございます。
やってみます。

598 名前:デフォルトの名無しさん [2009/07/26(日) 21:54:06 ]
デバッグヘルパって何ですか?
オプションの[Qt4]→[Qt Versions]の自動検出したQtのデバッグヘルパの所に赤いバツ印がついてるんですが

ちなみにQt Creator 1.2.1のバイナリだけをダウンロードし
win32-msvc2005でリビルドしたQt 4.4.3で使っています
Qt Creatorでビルドもデバッグも問題なくできます

599 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 01:38:20 ]
>>598
デバッグヘルパは Qt Creator でデバッグ時に Qt のクラスの内容をわかりやすく表示するために使われる。
QString だとか QList とか。

SDK ではなく Creator をインストールした場合にバツ印があるのは問題ない。
その場合は「リビルド」ボタンを押してヘルパを作ってやるといい。

600 名前:デフォルトの名無しさん [2009/07/27(月) 13:29:41 ]
>>599
あの「リビルド」ボタンはデバッグヘルパをビルドするためのボタンだったんですね
赤いバツ印も緑に変わりました
ありがとうございます。



601 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 19:57:59 ]
区切り線のウィジェットってありますか?
ボタンとボタンの間に線を引きたいのですがいい方法はありませんか?

QMenuのaddSeparatorみたいなイメージで、こんな風にしたいのですが…

layout->addWidget(button1);
layout->addWidget(button2);
layout->addSeparator();
layout->addWidget(button3);

602 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 20:09:38 ]
>>601
QFrameを使う。でframeShapeをQFrame::VLineかQFrame::HLineにすれば良い。
つーかQt Designerを使ってないのか?

603 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 20:35:23 ]
>>602
ありがとうございます。
frameShapeと合わせてframeShadowにQFrame::Sunkenを指定したら
思っていたような区切り線になりました。

Qt Designer使ってません…。

604 名前:デフォルトの名無しさん [2009/07/28(火) 22:08:54 ]
>>603
Designerでどんなコードが出るかを調べながらやると早く覚えられますよ。

605 名前:デフォルトの名無しさん [2009/07/28(火) 23:34:13 ]
QTableViewを使ってエクセルの「ウインドウ枠を固定」のような動作をさせたいのですが、
どのように作るのが良いでしょうか?
複数のテーブルをそれらしく組み合わせるとか・・・・

良い方法があれば教えてください。よろしくお願いします。

606 名前:デフォルトの名無しさん [2009/07/29(水) 10:44:43 ]
>>605
>複数のテーブルをそれらしく組み合わせるとか・・・・
それでいいような気がするけど。

607 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 10:30:04 ]
>>605
試してはないけれど、 Delegate を使って QModelIndex をうまくずらしてやれば
そちらでも対応できそうな気はする。

608 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 19:20:06 ]
WindowsAPIのPlaySound関数を使いたいのですが、関数実行後10秒〜30秒程で再生が止まってしまいます
QtアプリからはPlaySoundは使えないんでしょうかね?

609 名前:デフォルトの名無しさん [2009/07/30(木) 22:10:18 ]
>>608
Windowsでも、Qtは、Windowsアプリケーションに過ぎません、
ちゃんとWindowsのプログラミングをすれば使えます。

610 名前:デフォルトの名無しさん [2009/07/31(金) 13:01:37 ]
Qtデザイナーってどうよ?



611 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 16:06:59 ]
>>610
便利だけど、凝ったことをするには微妙。

612 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 16:08:12 ]
>凝ったこと
kwsk

613 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 16:31:52 ]
>どうよ?
kwsk

614 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 17:02:53 ]
mainで作られるwの中のuiをどこからでもいじれるようにはできますか???

615 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 17:40:13 ]
>>612
たとえば
* QDockWidget を使用する場合
* 画像の貼り付け(バックグランドの指定)など

コードとうまく組み合わせる必要があるのでそれなりに慣れはいる。

>>614
ui を public で公開してしまえばいいけど、設計としては勧めたくないな。

616 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 18:26:32 ]
>>615
kwsk
それだけじゃ何で不都合があるか分からん。
普通にDesigner使っても問題ないように思えるが。

617 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 19:05:23 ]
>>616
QDockWidget はドラッグ&ドロップで位置を変えられれないし(プロパティから変更はできる)、
二つのQDockWidgetをタブで同じエリアに配置するのもDesignerからはできなかったと思う。
大きさは変えても反映されない(こっちはQtの仕様上むずかしいが)。
Designer だけの問題ではないが、QDockWidgetを使いたい場合に希望通りの配置をするのは大変。
( アプリが使われ出したら saveState(), restoreState() を使うからいいんだろうけど。 )

画像の件はたとえばQWidgetの背景に画像を貼り付けたい場合にパレットで画像が指定できない。
パレットに画像を指定したい場合はコードで指定する必要がある。

基本の配置を作るのに Designer を使うのは便利なときも多いし、問題ないと思う。
ただ、ちょっと派手にしようと思ったりするとコードを書く必要が出てくるので、
GUIだけで「デザイン」をしたいと考えるなら微妙な時もある。
画面のどこまでを Designer で作りたいかだな。

618 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 19:12:29 ]
そういえばQSplitterってまだDesignerは対応してないよね?

619 名前:デフォルトの名無しさん [2009/07/31(金) 22:20:45 ]
>>618
ずっと前から対応していますね。

620 名前:デフォルトの名無しさん [2009/07/31(金) 22:22:29 ]
>>610
使える部分には、使えばいい。



621 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 00:18:55 ]
>>618
Containers の中ではなくて、レイアウトの方にある。
複数の Widget を選択した後に間に線と矢印のあるレイアウトを選択する。

622 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 05:37:47 ]
ウィンドウの最前面表示を切り替えようと以下のようなコードを
書いているのですが、一度ウィンドウを閉じてから開き直すような
動作になってしまいます。

Qt::WindowFlags flags = windowFlags();
flags ^= Qt::WindowStaysOnTopHint;
setWindowFlags(flags);
show();

一瞬ですがチラついて見える上、Windowsのタスクバー内の
アプリケーションの順番が変わってしまうのが気になるのですが
これを回避する書き方はないでしょうか?

623 名前:デフォルトの名無しさん [2009/08/01(土) 13:14:09 ]
>>622
Widget::activateWindow(), QWidget::raise()は?

624 名前:623 [2009/08/01(土) 13:22:11 ]
ごめん。Widget::activateWindow()のところに、
Windows版ではそうなると書いてあった。

625 名前:デフォルトの名無しさん [2009/08/01(土) 14:40:29 ]
>>614
uiにアクセスしたいクラスを、MainWindowクラスのfriendクラスに指定すれば良い

626 名前:デフォルトの名無しさん [2009/08/01(土) 20:26:30 ]
>>624
Qtに限らずWindowsならそうなります。Windowsだから仕方ありません。

627 名前:デフォルトの名無しさん [2009/08/01(土) 20:28:56 ]
>>614
そんな馬鹿なことしてはいけない。

628 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 23:19:08 ]
>>624
activateWindowの説明読んでみました。ウィンドウがアクティブじゃない状態で
呼ぶとアクティブにならずにタスクバーがチカチカするってことですよね。
アクティブな状態で呼ぶことを想定しているのでそこは問題ないんですが
メインウィンドウで呼ぶと一度閉じてしまう現象はよく分かりませんでした。
とりあえずこのままで我慢しておきます。

629 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 23:56:20 ]
QNetworkAccessManager や QHttp って同期的には使えない?
ちょっとデータを取ってくるだけで Signals/Slots 使って非同期な処理
書くのって微妙に面倒なんだけど…。なんか使い方間違ってんのかな?

630 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 00:25:49 ]
>>629
QEventLoopを使うと良いと思う。



631 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 01:00:58 ]
>>630
おおー、使ってみます!






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<182KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef