【GUIツールキット】Qt 総合スレ 4【Win/Mac/Linux】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/04/18(土) 04:29:47フォーム、ボタンなどの各種ウィジェットからネットワーク、マルチスレッド、グラフィックス(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
http://pc11.2ch.net/test/read.cgi/tech/1194158506/
0002デフォルトの名無しさん
2009/04/18(土) 04:30:12・Qt Software (旧Trolltech社/現在はNokia社の一部門)
http://www.qtsoftware.com/
・Qt のダウンロードページ(オープンソース版は、LGPL/Free Downloads タブから)
http://www.qtsoftware.com/downloads
・Qt のダウンロード(FTP)
ftp://ftp.qtsoftware.com/qt/source/
・SRA社(日本の代理店)の日本語で読める Qt 関連ドキュメント
http://www.sra.co.jp/qt/relation/index.html
■ライセンス関連まとめ
各ライセンスでの自作アプリのソース公開/頒布
Qtのライセンス アプリのライセンス Qtの頒布/(変更部分のソース公開)
GPL GPL(ソース公開必須) 必須
LGPL 任意(ソース公開不要) 必須
商用 任意(ソース公開不要) 不要
*: LGPLは動的リンク時
実際には他にも条件(リバースエンジニアリング関係とか)あるので、
きちんとライセンスの条文を読むこと。
0003デフォルトの名無しさん
2009/04/18(土) 04:30:29■どれをダウンロードするの?
・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 で配布上の制限はない
0004デフォルトの名無しさん
2009/04/18(土) 09:19:300005デフォルトの名無しさん
2009/04/18(土) 23:15:22QMutexじゃ無理なんだよね?
0006デフォルトの名無しさん
2009/04/18(土) 23:37:26うは、LGPLで使える様になったのか。NOKIAグッジョブb
今までGPL汚染が嫌で遠ざけていたけど、素晴らしいね。
そもそもGPLはライブラリのライセンスには不適格だから、
LGPL化は正常な方向への舵取りですね。
これでwxやGtk+に奪われた領土を少しは回復出来るかな?
0007デフォルトの名無しさん
2009/04/19(日) 11:47:16なるんですが、どうしてでしょう?マニュアルにもWebでもカンマに
ついて一言も書いてないです。
0008デフォルトの名無しさん
2009/04/19(日) 18:35:40カンマがセパレータとして認識されてるんじゃない?
0009デフォルトの名無しさん
2009/04/20(月) 00:49:520010デフォルトの名無しさん
2009/04/20(月) 03:18:49うーん。セパレータと解釈されてそうですが、そういう設定ないんですよね。
QSize型を書き出すと@Size(100 100)とか出力される例がマニュアルにあって、それもカンマ
使わずにスペースで区切ってあるんですよね。どうもカンマを使えないのはNokiaも知ってるっぽい?です。
なんかこういう重要な事がマニュアルに書いてないのが
オープンソースあがりっぽい感じがして少しがっかりです。
0011デフォルトの名無しさん
2009/04/20(月) 08:23:50>>10
環境は何ですか。
私の環境LinuxのQt4.5では、キーにカンマ(,)をつけても、
書き込み読み込みともにうまくいきました。
ただし、ファイルの中を見ると、カンマ(,)の部分は%2Cとなっています。
ASCIIの16進コードに置き換えられているようです。
0012デフォルトの名無しさん
2009/04/20(月) 11:15:20おお。WIndowsXPのQt4.5です。
すみません、読み込みは散々調べましたが、書き込みをやってませんでした。
いまやってみたら、
settings.setValue("TEST/KEY","0,1"); // KEY="0,1"
とダブルクォーテーションに包まれて出力されました。
この場合読み込みもうまくいきました。
Linuxと挙動がちがいますね。そちらではダブルクォーテーションになってませんか?
0013デフォルトの名無しさん
2009/04/20(月) 11:25:17ああ、なるほど、キーにカンマをつけた場合の話しですね。
私はキーの値にカンマをつけた場合の話しです。
キーにカンマをつけてみたら、同じく
settings.setValue("TEST/KE,Y","0,1");//KE%2CY="0,1"
%2Cとなりました。挙動は一緒みたいですね。
0014デフォルトの名無しさん
2009/04/20(月) 11:32:35誤るの遅くなりましたが、キー内容という表現が悪かったです。すみませんでした。
0015デフォルトの名無しさん
2009/04/20(月) 17:36:26こちら(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
0016デフォルトの名無しさん
2009/04/20(月) 19:15:02商用ライセンスならこれでできます。
Single Application ― Qt – A cross-platform application and UI framework
http://www.qtsoftware.com/products/appdev/add-on-products/catalog/4/Utilities/qtsingleapplication/
0017デフォルトの名無しさん
2009/04/20(月) 19:19:28おお、すばらしいです。
やりたいことが出来ました。
ですがちょっと納得いかないので調べてみます。
大変ありがとうございました。
0018デフォルトの名無しさん
2009/04/20(月) 21:15:53やっぱりちょっと問題があるようです。
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
同じ関数名なのに機能が統一されてない(´・ω・`)
たぶん、ほかにもいろいろとこういったものがあるのでしょうね(´・ω・`)。
0019デフォルトの名無しさん
2009/04/20(月) 21:42:39随分様変わりしたな
それはそうと、Qtを引っさげてIT業界へ転職しようと考えてる
応用情報午後で不合格ほぼ確定なオレにゃ甘い考えだろうか
0020デフォルトの名無しさん
2009/04/20(月) 21:57:33いいやそんなことないぞ。がんばれ
0021デフォルトの名無しさん
2009/04/21(火) 00:17:00qt-vs-addin-1.0.0-rc1.exeもインストールし、
ほぼ問題なく使えているのですが、
ウォッチウィンドウなどの表示で、
QMapのデータがerrorと表示され、内容が見れず困っています。
autoexp.datの設定には、QMapの内容が書かれているらしいのですが、
どうもよく分かりません。一部は括弧が対応していないところも見つけたので
ひょっとするとこのファイルがおかしいのではないかと思っています。
どなたか解決できてる方いらっしゃいますか?
0022デフォルトの名無しさん
2009/04/21(火) 01:09:36>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の中身は、""です。
以上を踏まえて値をとるようにすればよいのではないでしょうか。
0023デフォルトの名無しさん
2009/04/21(火) 01:10:51(サンプルコード)
#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"; // ここにはこないはず。
}
0024デフォルトの名無しさん
2009/04/21(火) 07:52:19RC1 だから開発元に報告した方がよいのでは?
0025デフォルトの名無しさん
2009/04/21(火) 15:36:06丁寧に教えてくださって恐縮です。ありがとうございます。
QVariantは中に何が入っているか調べないと使えないのですね。
本当の意味のVariantじゃない気がする。。
TrollTeckはこの実装が完璧だという認識なのでしょうか。。
0026デフォルトの名無しさん
2009/04/21(火) 15:50:23へんてこ英語で一応報告してきました。
0027デフォルトの名無しさん
2009/04/21(火) 16:31:19>QVariantは中に何が入っているか調べないと使えないのですね。
通常は、受取側がQVariantの中に何が入っているか分かっていることがほとんどでしょうからこれでも結構使えると思います。
ただ、今回の例では、settings.value()は常にQVariant::StringListを返すように実装してあるのがいいような気がします。
>本当の意味のVariantじゃない気がする。
>TrollTeckはこの実装が完璧だという認識なのでしょうか
確かに、もっと便利にできるでしょう。
将来に期待しましょう。
0028デフォルトの名無しさん
2009/04/21(火) 17:58:12QStringにはない(;´д⊂)
0029デフォルトの名無しさん
2009/04/21(火) 18:51:20読み出すと 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)
0030デフォルトの名無しさん
2009/04/21(火) 19:17:32クラスは基本QObjectを継承するのがいいのでしょうか?
QObjectを継承して、Q_OBJECTマクロを使っとけば、
connectとかtr()とかでC++の機能を拡張できる事と同等なので、
やっぱり全てのユーザクラスをそう作るのが基本になるのですよね?
0031デフォルトの名無しさん
2009/04/22(水) 13:11:03labelTitle.ForeColor = Color.Black;
で終わるところが、C++ + QTだと
QPalette pal = ui.labelTitle->palette();
pal.setColor(QPalette::Normal, QPalette::WindowText, QColor(Qt::black);
ui.labelTitle->setPalette(pal);
と書かないといけない(;´д⊂)
これって、QTの改良でなんとかならないのかな。
0032デフォルトの名無しさん
2009/04/22(水) 15:19:34C#では、
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がベストなのだろうか。
なんだろうこのジレンマ。(´・ω・`)
0033デフォルトの名無しさん
2009/04/22(水) 16:32:150034デフォルトの名無しさん
2009/04/22(水) 17:39:27setBackgroundColor()
はあるのに
setForegroundColor()
がない(´・ω・`)
QTは抜けがいっぱい。
0035デフォルトの名無しさん
2009/04/22(水) 19:00:35QTableWidgetItem には、setForeground() と setBackground() がある。
0036デフォルトの名無しさん
2009/04/22(水) 19:03:13QVariant には bool を入れられるから toBool() がある。
QString には toBool() 値に対応すべき文字列がきっちりと決められないから toBool() がない。
0037デフォルトの名無しさん
2009/04/22(水) 22:21:16autoexp.datのバグが登録されました。
http://www.qtsoftware.com/developer/task-tracker/index_html?id=251887&method=entry
なんだかうれしい。
0038デフォルトの名無しさん
2009/04/22(水) 22:29:13QTableWidgetItemのsetBackgroundColor()はObsoleteとなってました。
代わりがsetForeground() と setBackground() ですね。
0039デフォルトの名無しさん
2009/04/22(水) 22:29:38> intなんか4バイト程度で済むのにオブジェクトなんかにしたら容量食うし、遅くてしょうがない。
COOLを勉強して、ソープで童貞卒業してから出直せや
ttp://www.sage-p.com/process/cool.htm
0040デフォルトの名無しさん
2009/04/22(水) 23:46:30constの参照渡し、で int とかboolの時は値渡ししてるんだね。
それが速いんだろうな
0041デフォルトの名無しさん
2009/04/23(木) 00:30:590042デフォルトの名無しさん
2009/04/23(木) 01:47:22関数の戻り値で参照返しの時と、値返しの時があったんだけど、
QStringクラスの例
QString & setNum ( int n, int base = 10 )
QString toLower () const
これってどういう場合にどっちを使うのかな?(´・ω・`)
0043デフォルトの名無しさん
2009/04/23(木) 10:24:35すでに存在しているインスタンスを書き換えて返すので参照で返せる。
QString::toLower() は新たに文字列を作成して返す。
すでに存在しているインスタンスは変更せずに、新たにインスタンスを作成するので
参照ではなく値で返す。
0044デフォルトの名無しさん
2009/04/23(木) 11:30:35Named Parameter Idiomを意識してるのかな
新しく作って返すのは依存性を考えなくて楽だけど、C++ではコピーのコストがかかるので(ry
ポインタを返すのはcreate○○みたいないかにもファクトリメソッドにして、後で解放処理をすることを使い手に強いるか
shared_ptrみたいなスマートポインタをつかって(ry
0045デフォルトの名無しさん
2009/04/23(木) 11:39:02どうやって変えるのかな(´・ω・`)
0046デフォルトの名無しさん
2009/04/23(木) 11:55:37環境と使用した ColorRole は?
palette.setColor( QPalette::Window, Qt::red );
w.setPalette( palette );
で変えられるけど。
0047デフォルトの名無しさん
2009/04/23(木) 12:18:11QString & remove ( int position, int n )
の場合、
QString str = "ABC";
str.remove(0,1); //"BC"
と代入する必要はないけど、
QString toLower () const
の場合、
QString str = "ABC";
str = str.toLower();
と代入しないといけない。
これってちょっと覚えるのが難しいね。
代入しないといけないメンバ関数って何か共通点があるのかな(´・ω・`)
0048デフォルトの名無しさん
2009/04/23(木) 12:32:21WindowsXP 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);
}
とやっても赤くならない(;´д⊂)
0049デフォルトの名無しさん
2009/04/23(木) 12:47:09自分自身をインプレースで変えるメソッドと(QString::setNum: 戻り値の型はどうでもいい)
新しくインスタンスを作るメソッドの違いくらいわかろうぜ。(QString::toLower 戻り値の型がQString)
Qtじゃなくてもよく出てくるから。
戻り値の型がどうでもいいのにQString::setNumがQString &を返しているのは
自分自身の参照を返すといろいろ便利だから。
中ではreturn (*this)ってやってる。
インプレースのほうが効率がいいが、参照渡しとかで他のオブジェクトに渡すと中身を勝手に変えられる心配もある
新しくインスタンスを作ればその心配はなくなるが、ちと効率が悪い。
あと、C++は関数の評価順が未定義なので
関数の引数にインプレースで変更する処理を書くと変になる。
インスタンスを作ればそこら辺はもんだいない(たぶん)
たとえば
foo(str.remove(0,1), str) // NG
foo(str.toLower(), str) // たぶんOK
0050デフォルトの名無しさん
2009/04/23(木) 12:58:46ui.centralWidget->setAutoFillBackground( true );
0051デフォルトの名無しさん
2009/04/23(木) 13:34:54赤くなった(`・ω・´)
ありがとう。さすがだねぃ
0052デフォルトの名無しさん
2009/04/23(木) 18:57:42一つのスロット関数で受ける場合、どのコンボボックスからのシグナルなのか
判断するには、connect以外の経由で情報を渡すか、QComboBoxの継承自作クラス
で新規にシグナルを定義するしかないよね?
0053デフォルトの名無しさん
2009/04/23(木) 19:19:20QObject::sender()が使える?
0054デフォルトの名無しさん
2009/04/23(木) 20:09:560055デフォルトの名無しさん
2009/04/23(木) 20:38:46> 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++ の知識をしっかり身につけてから批判するように。
0056デフォルトの名無しさん
2009/04/23(木) 20:40:25> QPalette pal = ui.labelTitle->palette();
> pal.setColor(QPalette::Normal, QPalette::WindowText, QColor(Qt::black);
> ui.labelTitle->setPalette(pal);
>
> と書かないといけない(;´д⊂)
> これって、QTの改良でなんとかならないのかな。
palette でひとまとめにできるから統一的に色を扱えます。C# の方が古過ぎるのですよ。
0057デフォルトの名無しさん
2009/04/23(木) 20:56:33おお、QObject::sender()で出来たよ。すごい。
超シンプルな解法!さすがだねぃ
0058デフォルトの名無しさん
2009/04/23(木) 21:37:51childGroups()で得られるリストがファイル記述順になっててほしいんだけど、
やっぱり出来ないよね?やっぱり自作するしかないかな(´・ω・`)
0059デフォルトの名無しさん
2009/04/24(金) 00:05:560060デフォルトの名無しさん
2009/04/24(金) 01:32:420061デフォルトの名無しさん
2009/04/25(土) 00:44:37いい加減i7 920辺りに買い替えるべき?C2Qなら30分くらいで終わるの?
0062デフォルトの名無しさん
2009/04/25(土) 01:21:23Q9450使っているけど、かなり時間食う。
0063デフォルトの名無しさん
2009/04/25(土) 05:51:170064デフォルトの名無しさん
2009/04/27(月) 10:08:28これインストールフォルダに日付が入ってて気持ち悪い
みんなそのままインストールしてるの?
0065デフォルトの名無しさん
2009/04/27(月) 12:56:270066デフォルトの名無しさん
2009/04/27(月) 13:15:12警告された。でもmingwのwin32apiパッケージ自体はインストールしてるし、問題ないよな。
0067デフォルトの名無しさん
2009/04/27(月) 16:29:42今ダウンロードできる最新のパッケージの場合、今月(4月)リリースされてファイル名が
qt-sdk-linux-x86-opensource-2009.02.bin(Linux版の場合)。
2009は年を表していると思うけど、最後の02は2番目のリリースと言う意味だと思う。
0068デフォルトの名無しさん
2009/04/27(月) 17:37:23気持ち悪いんだったら、自分でrenameすればokじゃない?
0069デフォルトの名無しさん
2009/04/27(月) 21:48:00随分前(といってもVer4以降だが)、MinGWすでに入れてる環境に、
MinGWのPath指定してQtインストールしたら怒られたな
いくつかファイルが足りないとかで
気持ち悪いから、MinGWのPath指定せずQtインストーラ経由でダウンロードしたら解決した
それ以来、MinGWフォルダ圧縮して保管してあるお
0070デフォルトの名無しさん
2009/04/28(火) 09:27:21とりあえず、メモリ余ってるならTEMPをRAMDISKにしてみるとか、
っていってもビルドしてみた感じボトルネックはCPUっぽいから効果薄いかな。
0071デフォルトの名無しさん
2009/04/28(火) 09:49:59CPLUS_INCLUDE_PATHとか指定すると、specsのpathを見なかった事があった。
バージョンやbuild時の設定で違うのかもしれん。
0072デフォルトの名無しさん
2009/04/30(木) 17:20:50QtオプションでQtVresionsタブからAddを選んで、パスを指定しても
OKボタンがアクティブにならないので押せません。
このためか、Qtのバージョンを指定しろといわれて怒られます。
どうしたら良いんでしょうか?
0073デフォルトの名無しさん
2009/04/30(木) 18:10:44パスに日本語が含まれているとか?
0074デフォルトの名無しさん
2009/04/30(木) 18:19:27を指定しているので日本語は入っていないです。
RC1で試すと押せるのですが、パスに追加されないでいます。
0075デフォルトの名無しさん
2009/04/30(木) 20:51:190076デフォルトの名無しさん
2009/04/30(木) 22:26:59C:\Qt\qt-win-opensource-src-4.5.1
を指定したら出来ました。
お騒がせしました。
0077デフォルトの名無しさん
2009/05/01(金) 14:11:48みんなどんなふうにやってますか?
0078デフォルトの名無しさん
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って自動変数ですよね?
0079デフォルトの名無しさん
2009/05/01(金) 16:57:10自己解決しました。Orz
呼び出し元側で同じ変数が作られ、それにコピーされるわけですね
0080デフォルトの名無しさん
2009/05/01(金) 20:39:37既に開いているメインウィンドウがあれば、それをアクティブにするには
どうすればよいでしょう?
多重起動防止のみならQSystemSemaphoreで可能ですが。
プラットフォーム固有の処理になってしまうでしょうか?
0081デフォルトの名無しさん
2009/05/01(金) 21:31:24ttp://www.qtsoftware.com/products/appdev/add-on-products/catalog/4/Utilities/qtsingleapplication/
0082デフォルトの名無しさん
2009/05/01(金) 21:53:52商用版のVisual Studio Integrationを使って欲しいということでは。
0083デフォルトの名無しさん
2009/05/01(金) 21:55:28ありがとうございます。
こんなのがあったのですね。
SDKと分ける理由はなんでしょうね。
同梱で良い気がしますが。
0084デフォルトの名無しさん
2009/05/02(土) 01:00:29追加順にしたいのですが、出来ないものでしょうか?
0085デフォルトの名無しさん
2009/05/02(土) 11:43:32入れるものに追加順が分かる識別子を付けて、取出したリストをソートしては?
mapやhashは、その機能からして追加順を覚えるように実装するものじゃないです。
0086デフォルトの名無しさん
2009/05/02(土) 16:57:22ちなみに.NETのコレクションクラスは追加順を覚えています。
0087デフォルトの名無しさん
2009/05/02(土) 19:11:32それが仕様だったとしても何も自慢にならない希ガス
0088デフォルトの名無しさん
2009/05/02(土) 20:25:30本当だったら出鱈目な実装だね。それかたまたま何かの加減でそうなっているだけでしょう。
プログラミングの心得が少しでもあるならそんなことはおかしいと思わなくてはならない。
0089デフォルトの名無しさん
2009/05/02(土) 23:16:26心得があればMDBでKey-Value DBを作っているのと同じだと気付くと思うが。
0090デフォルトの名無しさん
2009/05/03(日) 00:48:12酷い実装だね。
0091デフォルトの名無しさん
2009/05/03(日) 01:11:15プログラマに余計なことをさせないように
言語側で余計なことをするってのが
今の流行だろ
0092デフォルトの名無しさん
2009/05/03(日) 01:37:35elegantではないがintelligentな実装だよ。
0093デフォルトの名無しさん
2009/05/03(日) 02:27:24そのまま使うと問題ないですが、継承して使用すると
「アプリケーションを正しく初期化できませんでした(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();
}
0094デフォルトの名無しさん
2009/05/03(日) 09:30:49Pythonも2.7では(組み込みの辞書ではなく)標準ライブラリにcollections.OrdererdDict
が追加された。
設定ファイルとか、JSONファイルとか、シリアライズ&でしりあらいずした後に
人間がテキストエディタで触りたいとかのとき、順序が記憶されると便利。
少ない追加コストで利便性が向上するのは悪くないトレードオフで、どちらかが
正しいということは無いと思うよ。
0095デフォルトの名無しさん
2009/05/03(日) 10:18:39おまい詳しいなw
LL系は知らないから参考になったお^^
0096デフォルトの名無しさん
2009/05/03(日) 10:57:44hashやmapにそんな無駄なコストを入れるなんて正しくないよ。
0097デフォルトの名無しさん
2009/05/03(日) 11:11:27argcに&が付いてないからでは?
MyApplication(int& argc, char* argv[]) : QtSingleApplication(argc, argv)
0098デフォルトの名無しさん
2009/05/03(日) 11:16:08単に用途によるってだけだろ
両方必要なら両方作るまでだし正しいも正しくないもねーよ
0099デフォルトの名無しさん
2009/05/03(日) 11:48:30検索速度を犠牲にするのだから正しくないよ。そんなのは偽物のはhash。
0100デフォルトの名無しさん
2009/05/03(日) 12:32:54比較対象が違います。
PHP、Ruby、Pythonのような元々速度が遅くて大容量データを
扱うのに向かない処理系ならそういった便利そうなものが付いて
もいいと思う。
0101デフォルトの名無しさん
2009/05/03(日) 12:42:55検索速度を犠牲にするような頭の悪い実装にするわけないでしょ?
思い込みで「酷い実装」だの批判する前にソースを読むように。
http://anonsvn.mono-project.com/viewvc/trunk/mcs/class/corlib/System.Collections.Generic/Dictionary.cs?view=markup
0102デフォルトの名無しさん
2009/05/03(日) 13:57:58まぁ別物、とまでは行かなくとも少なくともオリジナルからは逸れてる
そのオリジナルと異なるものが標準と勘違いすればそこでトラブルが発生する
>>86の場合、Pythonどうのこうのじゃなく、
コンパイラ依存になる点が大きな問題
龍に足生えると飛べなくなる、とかそういう話じゃない
0103デフォルトの名無しさん
2009/05/03(日) 14:02:19Monoの仕様は以前は追加順ではなかった。
Microsoftの実装と挙動が違うということで修正された。
実はオリジナルのソースも手に入るけど、
NDAの関係があるから晒すわけにはいかない。
0104デフォルトの名無しさん
2009/05/03(日) 15:06:29PHP, Ruby はともかく、Pythonはかなりコストを意識しているぞ。
だから、組み込みのdictはそのままに拡張したOrdererdDictを追加で作った。
同じ方針でQOrdererdDictがあっても良いと思う。
0105デフォルトの名無しさん
2009/05/04(月) 01:45:45Qt 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.と読んだんだけど詳しい人いる?
0106デフォルトの名無しさん
2009/05/04(月) 01:49:141.だよ
0107デフォルトの名無しさん
2009/05/04(月) 02:11:251 で正解。LGPL のソフトウェアを改変したら、改変したソースコードを
(求めに応じて)開示する必要がある。自分で書いた部分は開示する必要は一切無し。
MPL と一緒だね。
静的リンクをしてもソースコードを公開する必要がないときちんと書いてあるのは
偉いね。
0108デフォルトの名無しさん
2009/05/04(月) 02:13:280109デフォルトの名無しさん
2009/05/04(月) 09:20:03要素が多い場合にダブルバケットにした方が速い。無駄にメモリー使っている。
0110デフォルトの名無しさん
2009/05/04(月) 11:14:39ここQtスレなんで、続きはこっちでやれや。
消しゴムじゃないMONOを使ってみるスレ 2個目
http://pc12.2ch.net/test/read.cgi/tech/1100616350/l50
0111デフォルトの名無しさん
2009/05/04(月) 14:41:24VisualStudio2008で実行ファイルを作る場合、
>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は動的リンクになってるんだよね?
0112デフォルトの名無しさん
2009/05/04(月) 17:53:07間違い、補足あったらご指摘おねがいします。
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
となる。
0113デフォルトの名無しさん
2009/05/04(月) 21:16:200114デフォルトの名無しさん
2009/05/05(火) 07:34:25数年ぐらいさわってなかったけど今みたらIDEまでフリーみたいになっちゃってるけど
コンパイラついてないんだよね
0115デフォルトの名無しさん
2009/05/05(火) 14:18:21付属してるやつもあるよ、ちなみにMINGW
0116デフォルトの名無しさん
2009/05/06(水) 02:59:48そのウィジットのポインタを変数で保存して置かないといけないですか?
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();
}
0117デフォルトの名無しさん
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のサンプルはいい教材
0118デフォルトの名無しさん
2009/05/06(水) 11:17:40http://doc.trolltech.com/4.5/qlayout.html#takeAt
0119デフォルトの名無しさん
2009/05/06(水) 13:16:03takeAtでやってみると、一見消えたようにみえましたが、
ウィンドウ背景色がいつもと違ったのでウィンドウ大きくしてみると
でっかいボタンがありました。どうも、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();
}
0120デフォルトの名無しさん
2009/05/06(水) 14:07:45{
delete child->widget();
delete child;
}
0121デフォルトの名無しさん
2009/05/06(水) 21:35:130122デフォルトの名無しさん
2009/05/06(水) 21:37:030123デフォルトの名無しさん
2009/05/06(水) 23:14:48何の日本語バージョン?
>>122
一言で言うと軽量のIDE
ここらへんを見れば大体わかるかと
http://www.qtsoftware.com/products-jp/developer-tools/tools-flipper/cross-platform-ide
http://www.youtube.com/view_play_list?p=22E601663DAF3A14
まぁ、無料なんだし自分で試してみるのが良いと思うよ
http://www.qtsoftware.com/downloads-jp
0124デフォルトの名無しさん
2009/05/07(木) 10:16:30軽量だっていうことで評判はまずまずらしいのだが・・・
0125デフォルトの名無しさん
2009/05/07(木) 10:52:45簡単なGUIアプリを作成しようとしているのですが、
Designerで作成したuiを継承したクラスをつくりました。
その中でint型の変数をつくったのですが、
Creatorのデバッガで値を見ようとすると、
Localsのリストになく、
Watcherに手入力すると、
<not in scope>と返ってきます。
ブレークポイントは同じクラスの関数内(private slots)なので、
スコープは生きているはずだと思うのですが…。
どこか認識に誤りがあるようでしたらご教示ください。
0126デフォルトの名無しさん
2009/05/08(金) 01:56:33どのボタンが押されたのか判別する方法教えてくださいm(__)m
0127デフォルトの名無しさん
2009/05/08(金) 02:33:30sender()、ダイナミックプロパティかプロパティ、QSignalMapperなど。
0128デフォルトの名無しさん
2009/05/08(金) 03:07:37ああ、重要なこと書いてないことに気づきました。ごめんなさい><
マウスのどのボタンがトリガーになったのかを判断しようとしてました。
改めて書き直します。
QTableWidgetで8つのセルに0,1を書き、1バイトのビットをセルクリック
にて0,1の反転できるソフトを作っています。これは、cellClickedシグナルで
簡単に出来たのですが、QTableWidgetに右クリックでコンテキストメニュー
が出るようにしたところ、右クリックでも0,1の反転が動いてしまう事に気づき、
右クリックの時は反転動作をしないようにしようとした次第です。
ちなみに、QPushButtonでは、ボタンが押されるのは左クリック時のみで、
右クリックでは押されませんでした。
これからすると、問題なのは、QTableWidgetのcellClickedシグナルが右クリックでも発生して
しまう事なのではないかと思えてきました。。
0129デフォルトの名無しさん
2009/05/08(金) 03:51:36>これからすると、問題なのは、QTableWidgetのcellClickedシグナルが右クリックでも発生して
>しまう事なのではないかと思えてきました。。
いややっぱり、これは正しい実装ですね。あるセルが選択された状態で、別のセル上で右クリックしたとき、
ユーザがやりたい事は最初のセルのコンテキストメニューを開きたいのではなくて、右クリックした
セルのコンテキストメニューを開きたいのだから。
となると、やっぱり、cellClickedの引数に押されたマウスボタンの情報が入ってないのが
いけない気がしてきました。。
0130デフォルトの名無しさん
2009/05/08(金) 03:58:32QWidgetがタイマーの機能を持っていたり、
イベントを伝える手段がsignalと
virtual void mousePressEvent ( QMouseEvent * event )
など経由の2種類あったり、なにか統一されていない気がします。
これらって、理由があっての事なのでしょうか?
それとも、過去の手本としたライブラリのプログラミングスタイルから脱却出来ていないのでしょうか。
0131デフォルトの名無しさん
2009/05/08(金) 04:07:46どのボタンが押されたかが分かるシグナルを追加するか、イベントフィルター
でどのボタンが最後に押されたかを覚えておいて、イベントフィルターに尋ねる
ようにするというのは。
0132デフォルトの名無しさん
2009/05/08(金) 10:21:15> QWidgetがタイマーの機能を持っていたり、
QTimerを使えば、タイマー機能は独立したクラスとして扱えます。
実装上は辿り着くのは同じです。タイマー機能があるのはQObject
で、QObjectがタイマー機能を持つのは、以降のようにイベントの
2つの性質をタイマーに持たせられ、直交性を保って統一的になり
ます。
> イベントを伝える手段がsignalと
> virtual void mousePressEvent ( QMouseEvent * event )
> など経由の2種類あったり、なにか統一されていない気がします。
イベントの性質が違うから分けているのです。シグナルはセマン
ティックなイベントで、イベントハンドラーはシンタクティックな
イベントです。
> それとも、過去の手本としたライブラリのプログラミングスタイルから脱却出来ていないのでしょうか。
過去のを手本として、脱却していると思います。
0133デフォルトの名無しさん
2009/05/08(金) 16:26:27教えてくださってありがとうございます。
すみません、よく分からなかったのでもうちょっと詳しくお願いできないでしょうか。
QTが好きなので納得したいです。
シグナル→セマンティック→意味的?
イベントハンドラ→シンタクティック→?
自分で感じ取れているのは、
イベントハンドラはハードウェアレベルの低レベルイベントをそのまま。
シグナルは、ハードウェアの低レベルイベントを
高レベル(知的な解釈?)に解釈(QPushButtonが押されたとか)したもの。
という感じです。
でもなぜ二つの種類があるのかやっぱり分からないままです。
全てシグナルにしてしまったほうが分かりやすいのではないでしょうか?
0134デフォルトの名無しさん
2009/05/08(金) 17:01:59>いややっぱり、これは正しい実装ですね。あるセルが選択された状態で、別のセル上で右クリックしたとき、
>ユーザがやりたい事は最初のセルのコンテキストメニューを開きたいのではなくて、右クリックした
>セルのコンテキストメニューを開きたいのだから。
やっぱり、右クリックていうのは、そのセルを選択しコンテキストメニューを出すのが目的であって、
そのセルをクリックしたいわけでないので、クリックイベントが発生するのは間違いが気がする。。
0135デフォルトの名無しさん
2009/05/08(金) 18:50:11コンボボックスの上からカーソルが出ないように気をつけないといけない
のがつらいのですが、なにか方法ないでしょうか?
0136デフォルトの名無しさん
2009/05/09(土) 01:32:37Cdb(マイクロソフトのデバッガ)が使えるようになっていますね。
Gdbよりも良さげです。
0137デフォルトの名無しさん
2009/05/09(土) 09:40:49Windowsなら、GCCではなくてこれでなくてはね。
0138デフォルトの名無しさん
2009/05/09(土) 15:52:200139デフォルトの名無しさん
2009/05/09(土) 16:10:50Creator 1.0までは、GDBのインターフェイスしか無かったんじゃないの?
0140デフォルトの名無しさん
2009/05/09(土) 20:32:271.1のリリース後に、CDB向けのコードが追加されています。
MinGWのGCCは遅くてGCCのバージョンも古過ぎるので、
Visual Studioのコンパイラーが使えないと開発には使えま
せんからよい流れです。
0141デフォルトの名無しさん
2009/05/09(土) 20:48:55ちゃんと読めば良かった・・・
Creator 1.1 をvs2008でコンパイルしてGDBしか無くて
憮然としてたところだった。
0142デフォルトの名無しさん
2009/05/10(日) 00:43:00最近使い始めたばっかりの自分の理解では、
イベントハンドラは、ウィジェットの振る舞いを「定義」する時に使う。
シグナルは、ウィジェットを「利用」する時に使う。
イベントを伝える手段は二通りあるけれど、それぞれを使用する目的が違う。
0143デフォルトの名無しさん
2009/05/10(日) 02:46:280144デフォルトの名無しさん
2009/05/10(日) 13:00:13フォーカスをあてて、矢印キーを使う。
マウスイベントは、マウスポインターの下にあるウィジェットに送られます。
0145デフォルトの名無しさん
2009/05/10(日) 14:15:020146デフォルトの名無しさん
2009/05/11(月) 23:10:04Qtのリポジトリが公開されています。自動テストのコードも入っていました。
0147デフォルトの名無しさん
2009/05/12(火) 05:06:31http://sourceforge.jp/magazine/09/02/23/037237
ちと古い話になるが、Java向けは消えてたのか
まぁQtはC++だからこそ需要があったのであって
Javaにはあまりなさそうだしな
0148デフォルトの名無しさん
2009/05/12(火) 19:14:08httpサーバから 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でうまくいってる人いる?
0149デフォルトの名無しさん
2009/05/12(火) 21:18:48QNetworkReply でとってきたデータならすでに展開済みだと思う。
0150デフォルトの名無しさん
2009/05/18(月) 11:40:57なぜか、下記の方法だと一部うまくいかないのですが、どうしてでしょうか。
環境は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"となります。
どうしてでしょう?
0151デフォルトの名無しさん
2009/05/18(月) 14:45:57その後、分かったことですが
どうやらQTextCodecのバグ?のようです。
#include <QDebug>
#include <QTextCodec>
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
qDebug() << "ffあ";
QString string("ffあ");
qDebug() << string;
とすると、
ffあ
"ffあ"
となります。
EUC-JPとかの環境でもなるか、どなたか調べてもらえないでしょうか?
0152デフォルトの名無しさん
2009/05/18(月) 14:51:23QtCreatorを使っているなら、
エディタのオプションでエンコードを変えられます。
Emacsとかでもちゃんと文字コードは変えられますよ?
0153デフォルトの名無しさん
2009/05/18(月) 14:53:55訂正
今気づいたのですが、
151の結果の
ffあ
"ffあ"
は、コンソール上では
ffdy
"ffdy"
になっていたのですが、コピーして貼り付けたら
151のようにちゃんとした結果になっていました。
こちらの環境の問題かもしれません。
もう少し自分で調べてみなす。
お騒がせしました。
0154デフォルトの名無しさん
2009/05/18(月) 15:03:250155デフォルトの名無しさん
2009/05/18(月) 15:32:50どうも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以外にすると問題なし。
0156デフォルトの名無しさん
2009/05/18(月) 17:02:02ffが先頭の文字でなくて、途中にあってもそれ以降にある日本語が化けるようです。
例えば
"testfftestあ"
また、"fiあ"
も化けします。
0157デフォルトの名無しさん
2009/05/18(月) 17:31:55フォントをDejaVu系から変えたら正常に表示されない?
こちらでは他のフォントにするとちゃんと描画される。
ややこしいバグだけど、デフォルトのフォントでうまくいかないのは困るな。
0158デフォルトの名無しさん
2009/05/18(月) 18:00:14おっしゃる通り。フォントの問題だったようです。
ただ、DejaVu系ではだめでした。
さざなみゴシックにしたら、ちゃんと表示されました。
ありがとうございました。
0159デフォルトの名無しさん
2009/05/19(火) 06:29:42QDateTime::toTime_tではQDateTime::fromStringで生成したデータを変換することは出来ませんでした
何か他に便利なメソッドはありますか?
0160デフォルトの名無しさん
2009/05/19(火) 06:48:00年の入力を2桁にしていたので1909年とされていたようです
出力も2桁にしていたので気付きませんでした
0161デフォルトの名無しさん
2009/05/19(火) 10:16:54この際、Qtをつかったとき、
日本語表示に一番適したフォントをまとめてみるべき?
0162デフォルトの名無しさん
2009/05/20(水) 10:04:48オブジェクトを表示させているキャンバスが、作成したGUIから外れて、
PCのモニタの左上に張り付くような感じになってしまいました。
同様の現象になった方、居ませんか?
解決策など分かりましたら、お願いします。
0163デフォルトの名無しさん
2009/05/20(水) 11:14:04用意されているようですがわかりません。
0164デフォルトの名無しさん
2009/05/20(水) 12:31:21doxygen はQtスタイルをサポートしてるから doxygenを使えばいいんじゃないの?
0165デフォルトの名無しさん
2009/05/20(水) 12:45:34Qtのドキュメントはそれで html にしている。
0166デフォルトの名無しさん
2009/05/20(水) 12:46:18Qt使いが作ったんじゃなかったっけ
0167デフォルトの名無しさん
2009/05/20(水) 21:11:40の使い方が分かりません。
具体的にはmixiにログインして、
home.plのhtmlソースを取得したいのですが。
QHttpRequestHeader header("POST", QUrl("http://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は生成されるものの、ブランクファイルでした。
よい方法をご教示ください。
よろしくお願いします
0168デフォルトの名無しさん
2009/05/20(水) 22:48:15自分も分からないので確認するべきポイントを…
・POST先URLは正しいか?
・requestの戻り値は?
・emailにnameを渡しているが正しいか?
・メアド、パスワードは正しいか?
・リクエストがPOSTで正しいとすれば、&passwordって…おかしくないですか?
0169デフォルトの名無しさん
2009/05/20(水) 23:09:24ゴメン、適当すぎた
qtdemoにHTTPクライアントのexampleがあるから
それを参考にするといいんじゃないかな?
0170デフォルトの名無しさん
2009/05/20(水) 23:15:190171デフォルトの名無しさん
2009/05/21(木) 10:11:32さらに将来LGPL版が亡くなる可能性は無い?
0172デフォルトの名無しさん
2009/05/21(木) 10:17:17LGPLのライセンス上無くなるって事はありえない
開発停止とかはありえるけど, 入手や使用が不可能になることは無い
0173167
2009/05/21(木) 10:21:08ありがとうございます。
POST先のURLなどは確認しています。
requestの戻り値は今夜確認します。
emailにnameを渡すのは、id=emailのinputにアカウント名を渡しています。
&passwordはPOSTの形式がid A,Bに対して、
"A=xxx&B=yyy"という形式だと、
POSTの仕組み関係のページに書いてあった気がします。
これも確認してみます。
qtdemoのexampleですか。
気づきませんでした、参考にします。
QNetworkAccessManagerですか。
よく分かりませんが、これも勉強してみます。
皆さん、ありがとうございました。
また詰まったらor解決できたら、
ご報告させて頂きますね。
0174デフォルトの名無しさん
2009/05/21(木) 10:56:50これは知らなんだ
0175デフォルトの名無しさん
2009/05/21(木) 12:12:18ありがとうございます。
qdoc3ですが、私の環境ではQtのディレクトリ内のbinにコピーされていませんでした。
tools/qdoc3/releaseにはありましたが。
ちょっと試してみます。
>>164
折角なので本家のツールを使用してみたいと思います。
0176デフォルトの名無しさん
2009/05/21(木) 15:39:050177デフォルトの名無しさん
2009/05/21(木) 15:39:21本家の All Tools をみたのですがないようです。
qdoc3は拡張子がqdocconfのファイルを引数とするようですがqdocconfの
書き方などのドキュメントがあればと思います。
0178デフォルトの名無しさん
2009/05/21(木) 16:07:04QDesktopServices::openUrl()
0179デフォルトの名無しさん
2009/05/21(木) 17:06:51Vistaマシンだと残像が残ってしまいます。
XPでは正常に描画され、VistaでもAero環境だとこれも正常に描画されます。
VistaでQPainterによる描画を行う場合、何か特別な処理が必要だったりするのでしょうか。
0180デフォルトの名無しさん
2009/05/21(木) 18:00:37wxWidgetsをMac OS Xにインスコするのには数日費やしますたw
0181デフォルトの名無しさん
2009/05/21(木) 18:37:43QHttpクラスのリファレンスに書いてあるよ
http://doc.trolltech.com/4.5/qhttp.html#details
0182デフォルトの名無しさん
2009/05/21(木) 19:43:00dmg版があるし、そいつをマウントしたら親切なインストーラがあるよ。
0183デフォルトの名無しさん
2009/05/21(木) 22:11:23調べると、QString::fromUcs2()の例があるけど、QT4にはないみたいです(⊃д⊂)
0184デフォルトの名無しさん
2009/05/21(木) 23:12:04QString::fromUtf16() は?
0185デフォルトの名無しさん
2009/05/21(木) 23:42:27#ifndef UNICODE
#define T2Q(tstr) QString::fromLocal8bit(tstr)
#else
#define T2Q(tstr) QString::fromUtf16(tstr)
#endif
0186デフォルトの名無しさん
2009/05/22(金) 10:48:2824時間以上を扱うライブラリはないのでしょうか?
0187デフォルトの名無しさん
2009/05/22(金) 11:44:470188167
2009/05/22(金) 12:21:32です。
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()を呼び出したいのに。
0189デフォルトの名無しさん
2009/05/22(金) 13:21:21>同一スロット内に記述せずに、分けてconnectするのが賢明らしい。
Qtのネットワーク系の多くのメソッドは非同期動作するので、リクエストだけ出して
返事を待たずに制御が帰る。相手からのレスポンスが来たら SIGNAL で通知される。
リクエストの送出とデータの受け取りは分けなくてはいけない。
>回避しようとQObjectを継承すると、
クラスの定義はどうやってる?
Q_OBJECT はあるか。
slotMySlot() は public slots: スコープで宣言しているか等。
0190167
2009/05/22(金) 13:48:07>リクエストの送出とデータの受け取りは分けなくてはいけない。
QHttp::post()などでは、格納先を引数で渡していたので、
QNetworkAccessManager::postでも同じだと思っていたのです。
myCoreクラスではQObjectをpublicに継承し、
Q_OBJECTは書いたり書かなかったりいろいろ試しました。
slotMySlot()はmyCore.hでpublic slots:として宣言しました。
myCore : public QObject,
myCore::myCore( QObject* parent )
:QObejct(parent)
がいけないんでしょうか。
0191デフォルトの名無しさん
2009/05/22(金) 14:00:34>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()) );
みたいな記述でいけるはずだが…。
0192167
2009/05/22(金) 14:10:23ありがとうございます
今夜もう一度試してみます。
(今は呼び出し側のQDialog内でmyCoreの機能をすべて移しています)
このmyCore内で、
manager = new QNetworkAccessManager( this );
をしたときはどうなるんでしょうか。
(myCore *)thisだと、managerのコンストラクタに、
一致するものがありませんよね?
(QObject *)でキャストするべきなのか、
ダイナミックキャストをするべきなのか…。
0193デフォルトの名無しさん
2009/05/22(金) 14:18:11キャストなしでOK。
0194デフォルトの名無しさん
2009/05/22(金) 14:32:02それとも日本語チュートリアルとかネットに落ちてますか?
0195デフォルトの名無しさん
2009/05/22(金) 20:39:520196デフォルトの名無しさん
2009/05/23(土) 06:37:10これを別のQtプロジェクトのappで使いたいんですが、どこにこのlibを使うことを
記述すればいいんでしょう?
makefileかと思ったんですが、run qmakeするとデフォルトに戻ってるみたいですし...。
0197デフォルトの名無しさん
2009/05/23(土) 07:56:20Windowsのときは、プロジェクトファイル(.pro)に次のように追記すればよい。
LIBS += c:/mylibs/math.lib
qmake Variable ReferenceのLIBS項目に書いてある。
0198デフォルトの名無しさん
2009/05/23(土) 14:41:570199デフォルトの名無しさん
2009/05/23(土) 15:56:280200デフォルトの名無しさん
2009/05/23(土) 20:14:05"TEST<a href=\"http://www.google.co.jp\">TEST</a>"
などのリンクを設定して、ラベルをDisableにすると、
リンク部分の青字フォントがダブルストライク?のようになって汚くなります。
バグでしょうか?
0201デフォルトの名無しさん
2009/05/24(日) 00:58:02どのOSとスタイルで、どのフォントを指定するとなるのでしょうか。
0202デフォルトの名無しさん
2009/05/24(日) 06:08:46ごめんなさい、WinXPのXPスタイル?です。
0203デフォルトの名無しさん
2009/05/24(日) 08:33:58それではMOCが失敗するのですね?
Unicodeでなくむしろ、Shift-JISやEUCでないとQtは正しくうごかない?
0204デフォルトの名無しさん
2009/05/24(日) 09:06:07自分の環境はLinuxだけど、ソースファイルをUTF-8にしても問題は出ていない。
環境は?
0205デフォルトの名無しさん
2009/05/24(日) 09:42:05確かに表示が汚いな。
4.4と比べてみないとバグとはっきりは言い難いけど。
月曜になればいろいろチェックできると思うけど、
本家に報告してみるのも手。
0206デフォルトの名無しさん
2009/05/24(日) 09:47:58>Qt Creatorにソースファイルを個別にコンパイルする機能ってないですよね。
ファイルを指定してコンパイルすることは、多分できないと思います。
でもプロジェクトを複数個作って(読み込んで)、
プロジェクトを切り替えてビルドするというのはどうですか。
ただし、少々面倒かもしれないけれど。
0207デフォルトの名無しさん
2009/05/24(日) 10:03:31LIBSをキーワードに勉強してみます。
0208デフォルトの名無しさん
2009/05/24(日) 12:10:20Linuxのplastiqueスタイルだけど、
ラベルをDisableにするとEnableにする前より、リンク部分が強調されている感じになった。
同じような結果。
0209デフォルトの名無しさん
2009/05/24(日) 15:11:08>ソースファイルを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になってしまうことです。
0210デフォルトの名無しさん
2009/05/24(日) 15:14:11ソース自体はUTF-8で書いていて、
外部から読み出したデータをQTreeWidgetで表示させたいんだけど、
そのデータがEUC-JPなんだ。
QTreeWidgetにsetCodecとか無さそうだし…
0211デフォルトの名無しさん
2009/05/24(日) 16:36:52外部ファイルのエンコーディングがEUC-JPなら、QTextStreamでsetCodec()
して、QStringに読込めば、それをQTreeWidgetに渡して表示できます。
生のEUC-JPへののchar*ならば、QTextCodec::codecForName("eucJP")で返る
インスタンスのtoUnicode(char*)でQStringを得られます。
0212194
2009/05/25(月) 10:40:45>入門 Qt 4 プログラミング
>QT Createrの説明がない
Qt Createrの説明が無くてもおkなんですか?
それとも、
>Qt GUIプログラミング (C magazine)
の方が良いのかなぁ?
Qt導入するということになったら、
自分が本読むだけでなくて、
本渡すだけでQt Createrの説明終わらせる方が楽なようなw
0213210
2009/05/25(月) 11:31:56現状では、
QString A;
QString B;
となっていて、AがUTF-8(ソースコードで直値で文字列を指定)で、
BがEUC-JP(QBufferから読み込んでいる)なんだ。
うまく切り替えができないものでしょうか?
それとも、この構成自体がナンセンスでしょうか。
0214210
2009/05/25(月) 11:36:53Aをtr("")としていて、BはそのままのQStringということで、
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec);
codec = QTextCodec::codecForName("euc-JP");
QTextCodec::setCodecForCString(codec);
と、trとCStringに別々に*codecを渡せばOKでした。
0215デフォルトの名無しさん
2009/05/25(月) 14:46:34そんなグローバルな設定変えなくても、QBufferからQStringを読み出すときに
QTextStream をかませて、 QTextStream の setCodec() 使えば良いのでは?
0216210
2009/05/25(月) 15:20:01QString 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()使えないよなぁ、と思ってしまってました)
ありがとうございました
0217215
2009/05/25(月) 16:13:50俺は PyQT ユーザーなのでリファレンス読んだだけの回答になるけど、
QTextStream strm((QIODevice*)buf); // キャストはたぶん要らない
strm.setCodec("eucJP")
QString answer = strm.readLine()
俺が「かませる」といったのは、こんな風に QBuffer を QTextStream で
wrap することであって、QBufferから一行取り出してはQTextStream に
コピーすることじゃない。
0218デフォルトの名無しさん
2009/05/25(月) 16:39:45Linux/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
バグっぽいけど聞いてみないとわからないかな。
直っても青い色が変わるわけでもなさそうなので効果は限定的かも。
0219デフォルトの名無しさん
2009/05/25(月) 18:53:56> Qt Createrの説明が無くてもおkなんですか?
Qt Creatorは、IDEのひとつなのでなくてもやって行けます。
Qt 4を覚えるには、もうひとつはQt 3なので、Qt 4のこちらがよいです。
> Qt導入するということになったら、
> 自分が本読むだけでなくて、
> 本渡すだけでQt Createrの説明終わらせる方が楽なようなw
Qt Creatorのマニュアルの翻訳は、Qt Creatorの日本語化プロジェクトで
行なわれているので、できるまでは英語で我慢して、入門Qt 4プログラミングを渡せば楽でしょう。
0220210
2009/05/25(月) 23:48:39ありがとう、助かりました。
改行コードが取り除かれてることに気づかず、2時間悩んだのは秘密です(w
オライリーのは版によっては誤植が多々あるので気をつけてください。
その点、原本は英語ですが割と読みやすいです。
そもそも技術書の英語は文学と違って先入観を捨てれば読みやすいと思う。
まぁ、こればかりはホントに主観だけど。
それと、チュートリアル本としてはあまりいい構成ではないと思います。
表計算ソフトのメインウィンドウのサンプルが長く、
しかも章を跨いで打ち込みをしないと、
実行してどう動くのか掴みにくいと思います…。
私の場合はそこで諦めて、後半はパラ見だけになってしまいました。
0221デフォルトの名無しさん
2009/05/26(火) 08:19:45書籍はC++ GUI Programming With Qt 4 Second Editionがあれば他はいらないと思う。
英語の本とはいえ英語が赤点だった自分でも理解できているので問題ないかと。
一応、Googleブック検索でFirst Editionが読めるので、試し読みしてみることをすすめる。
Qt Creatorはまだ出たばっかりというのと軽量IDEという方向性的なため
機能がシンプルなので特に迷うことなく使用できるはず。
まぁ、裏を返せば出来ることが少ないんだけどね。
0222212
2009/05/26(火) 08:53:55了解。
Qt 4本買ってみます。(英語アレルギーの人が居るかもなので、日本語買うかも)
Qt Createrは軽量IDEなんですね。
とは言っても、XCodeよりは賢い動作っぽいし(マカーが怒る?)、クロスプラットフォームなところが安心ですね。
wxDevC++で作成したコードをMACに送ってXCodeコンパイルやったら辛かった。
0223デフォルトの名無しさん
2009/05/26(火) 10:51:29ttp://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を買う前に目を通すといい。
0224デフォルトの名無しさん
2009/05/26(火) 13:23:28あくまでちゃんと本買ってCDROMからってことなのかな?
0225デフォルトの名無しさん
2009/05/26(火) 19:33:52周りを別の色で強調するようにしたんだけど
FreeBSDではマウスをそこから離すと強調したところが真っ黒になってしまう
これってQtじゃなくてグラフィックドライバの問題なんですかね
0226デフォルトの名無しさん
2009/05/26(火) 20:24:35C++GUI programing with qtもセカンドエディションがある。
0227デフォルトの名無しさん
2009/05/27(水) 09:03:06何これ、かなり読めちゃうね。
0228デフォルトの名無しさん
2009/05/27(水) 15:18:48ダイアログのサイズが配置されているウィジェットを無視して最小にな
ってしまいますが前からこんなんでしたか?
ウィジェット群に適当なマージンをとってダイアログがリサイズされたと
記憶しているけども。
0229デフォルトの名無しさん
2009/05/27(水) 16:40:370230デフォルトの名無しさん
2009/05/27(水) 18:34:10QVBoxLayout
-QGridLayout
-QWidget(4個)
-QHBoxLayout
-QWidget(2個)
0231デフォルトの名無しさん
2009/05/27(水) 21:13:23ウィジェットを色々配置して何らかのレイアウトを使うとui_xxx.hのclass Ui_xxxのメンバに無意
味と思えるQWidget*のインスタンスwidgetができるのですがなんでしょうね。
0232デフォルトの名無しさん
2009/05/28(木) 07:28:23多分 designer のレイアウトの使い方が間違ってる。
top level widget にレイアウトを割り当てるときには
レイアウトしたいwidgetをマークしてレイアウトを選ぶのではなく、
top level widget(この場合は最上位のDialog)を選んでレイアウトを選択する。
( レイアウトを新たに作るのではなく、Dialogにレイアウトを割り当てる)
Object Treeで Dialog の直下にレイアウトがないのに
レイアウトが反映されている状態が正常。
Dialogのプロパティに Layout があるかどうかをチェック。
designerのこの仕様は正直わかりにくい。
0233デフォルトの名無しさん
2009/05/28(木) 12:09:46教えて頂き、ありがとうございます。
0234デフォルトの名無しさん
2009/05/28(木) 22:59:58QtCore4.dll,QtGui4.dll,QtNetwork4.dll,mingwの(名前忘れた).dll
が配布時に必要ですよね。
これらのdllって、\qt2009.2\Qt\binから持ってくるべきですか?
それとも\qt2009.2\binから持ってくるべきですか?
それと、それらのexeファイルとdllの位置関係なのですが、
同じディレクトリに入れればいいのでしょうか。
プロジェクトファイルで指定ですか??
とりあえず、Qtの無い環境で、上のdll4つ、
同じ場所においてDependencyWalkerで走らせたのですが、
dllがないってエラー吐かれてしまいました。
0235デフォルトの名無しさん
2009/05/29(金) 06:41:36debugでビルドしたものではありませんか?
debugビルドした場合は、QtCore4d.dllなどの
ファイル名が〜dとなっているDLLに依存しますよ
0236デフォルトの名無しさん
2009/05/29(金) 08:45:57LinuxとかWindowsCEとかはどうやってごちゃ混ぜに書くんでしょうか?
0237234
2009/05/29(金) 12:24:15debugでビルドしたものは4MB近くあるのに対して、
releaseでビルドしたものは100KBなので、間違いないです。
ちなみに、プロジェクトファイルは以下のようになっています。
TEMPLATE = app
TARGET = ./bin/myApp
DEPENDPATH += ./src
INCLUDEPATH += ./src
0238デフォルトの名無しさん
2009/05/29(金) 12:56:04具体的にどのdllがないっていわれる?
簡単なアプリなら
app.exe QtCore4.dll QtGui4.dll mingwm10.dll だけでうごいてるけど。
画像を扱う場合などは plugins の下を適当にコピーして場所を設定する必要があるかも。
ただし、この場合のエラーは別の原因だと思うが。
0239234
2009/05/29(金) 13:27:23MSJAVAとかを抜きにすれば、
QtCore4.dll
QtGui4.dll
QtNetwork4.dll
mingwm10.dll
のすべてが赤い表示になってしまいます。
画像はpngファイルをアイコンとして使っていますが、
仰っているように、
GUI表示されたときにきちんと表示されているので、
問題は他にあるのでしょう。
0240デフォルトの名無しさん
2009/05/29(金) 14:09:13app.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)をコピーすれば、うまくいくはずだが…。
0241234
2009/05/29(金) 14:19:37ありがとうございます。
プロジェクトファイルでの記述は無関係でしょうか??
リファレンスを読む限りでは、
同一ソリューション内の別プロジェクトに、
依存する場合は云々と書かれているので、
おそらく関係ないんでしょうね…?
0242デフォルトの名無しさん
2009/05/29(金) 14:31:19ビルドできていれば問題ないとは思うけど。
proファイルはこれだけ(Creatorで作成)。
app_bundle は Macにしか効果がないようなのでCONFIGはほぼ無関係。
TARGET = app
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
そこそこ規模のあるアプリで試しているようなので、
簡単なものでチェックしてみては。
0243デフォルトの名無しさん
2009/05/29(金) 15:58:28ttp://www.amazon.co.jp/dp/4877832211/
こんな本出てたんだなとおもったら、いきなり評価☆一つとはw
0244デフォルトの名無しさん
2009/05/29(金) 16:04:35この人にとっては役に立たなかったんだろうけど
まぁ俺にも役立ちそうに無いが
0245234
2009/05/29(金) 16:11:11ビルド環境にも問題があるような気がしてきました。
Athlon64マシンにWindowsXP32bit版、MinGW32でビルドした場合、
動く構成はどのようになるのでしょうか。
0246デフォルトの名無しさん
2009/05/29(金) 18:48:30linuxのgccでも動く。
セロリンだけど。
0247デフォルトの名無しさん
2009/05/29(金) 18:51:210248デフォルトの名無しさん
2009/05/31(日) 03:01:14setApplicationNameやsetOrganizationNameがそれだと思ったのですが違うようで。
0249デフォルトの名無しさん
2009/05/31(日) 11:35:32そういう機能はqmakeの方だな。
ttp://doc.qtsoftware.com/4.5/qmake-variable-reference.html#version
0250デフォルトの名無しさん
2009/05/31(日) 12:11:10VERSIONは与えられました。
qmakeの変数には見当たりませんが会社名等は扱えないのでしょうか?
MFCのリソースのようなものがあれば良かったのですが。
0251デフォルトの名無しさん
2009/05/31(日) 13:40:42そういうのはwindresを使うものと思ってたが
0252デフォルトの名無しさん
2009/05/31(日) 14:15:40マニュアルにはないけれど、 QMAKE_TARGET_COMPANY
他の関係変数は QMAKE_TARGET_DESCRIPTION, QMAKE_TARGET_COPYRIGHT, QMAKE_TARGET_PRODUCT
詳しくは qmake のソースを。(qt\qmake\generators\win32\winmakefile.cpp)
0253デフォルトの名無しさん
2009/05/31(日) 14:53:09マニュアルにないということは将来別の方法でサポートする可能性があるのでしょうかね。
qdoc3も表に出していないツールのようで、どうもDoxygenを使った方が良いようですし。
0254デフォルトの名無しさん
2009/05/31(日) 15:16:14機能がなくなることはないと思うが、気になるようならrcファイルを作って、
RC_FILE でそのファイルを指定するようにした方が確かなのかもしれない。
RC_FILE についてはマニュアルに記載してある。
0255デフォルトの名無しさん
2009/05/31(日) 16:23:50以下のようにモデルが設定されていない、あるいはモデルのデータがない状態で 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を継承してサブクラスを作成し、第一列のみサイズ変更可能にしたいのですが・・・何か対処方法をご存知の方、別のアイディアをお持ちの方がいればよろしくお願いします。
0256デフォルトの名無しさん
2009/05/31(日) 17:35:03ASSERT出して落ちてるな。
ASSERT: "visual != -1" in file itemviews\qheaderview.cpp, line 1168
基本的に落ちるのはバグ。
qt-bugsにメール出して直してもらうのが一番。
0257デフォルトの名無しさん
2009/05/31(日) 18:48:14確認ありがとうございます。
やっぱりバグなんですかね。トラック見てもそれらしいものが見つからなかったので、とりあえずメール出してきました。
しばらくはモデルのデータセット後にsetResizeMode()を呼ぶことにします。
0258デフォルトの名無しさん
2009/05/31(日) 19:05:580259デフォルトの名無しさん
2009/05/31(日) 20:44:36ttp://qt.gitorious.org/qt/qt/commit/b89efc8e7f3289ff85a5076297e4357283dd24a5
0260デフォルトの名無しさん
2009/06/01(月) 02:28:280261デフォルトの名無しさん
2009/06/01(月) 10:41:15ないので QDateTime と QTimer を使って作る。
0262デフォルトの名無しさん
2009/06/01(月) 15:36:12楽な方法は見つからなかった。
setFixedSize() を呼び出すとサイズが変えられるから SizeHint や SizePolicy を
うまく設定すれば何とかなるかもしれない。
面倒だけど QMainWindow::saveState() した結果を変更して QMainWindow::restoreState()
すれば変更できるかも。
0263デフォルトの名無しさん
2009/06/02(火) 18:49:34QTreeView::setHeader()のソース見ると、d->header->setParent(this)っていうのがあるんだけど、QWidgetからQTreeViewへどうキャストすればいいのか分からない・・・
0264デフォルトの名無しさん
2009/06/03(水) 01:04:18QHeaderView *header = view.header();
QObject *obj = header->parent();
QTreeView *tree = qobject_cast<QTreeView*>(obj);
0265デフォルトの名無しさん
2009/06/03(水) 01:31:26できた、ありがとう! qobject_cast知らなかった、便利そう♪
0266デフォルトの名無しさん
2009/06/04(木) 10:52:220267デフォルトの名無しさん
2009/06/04(木) 17:41:07┌┤
││
││
├┤Widget
││
││
└┤
こうではなく
┌────┤
├────┤Widget
└────┤
このような形にする方法ってありますか?
0268デフォルトの名無しさん
2009/06/06(土) 12:34:56http://sourceforge.jp/projects/qt-creator-jp/
ヘルプファイルの日本語化をされている方がいます。
0269デフォルトの名無しさん
2009/06/07(日) 10:09:17もしデザイナでできないならば、コードではどう書けばいいのでしょうか?
0270デフォルトの名無しさん
2009/06/07(日) 12:32:49Splitterの下にあるWidgetの SizePolicy -> Horizontal(Vertical)Stretch の値を
それぞれのWidgetで明示するといいみたいです。
左のWidgetでは 10, 右のWidgetは 1 とか
0271デフォルトの名無しさん
2009/06/09(火) 02:28:23当方Win上のVMware上のFreeBSD7.1にて、Qt4.5.1とQtCreatorのコンパイルは
何とかできたのですが、QtCreatorを実行してもウィンドウが現れないのです(;´д⊂)
PortsのKDE4.4.2も同時に動かしてあって、これにつかってるQt4.4.3が影響してるのか。。
QtCreatorを動かすために、gdbで手動デバッグ、やPrintfデバッグするしか手が思いつかなくて(;´д⊂)
0272デフォルトの名無しさん
2009/06/09(火) 02:44:47エラーメッセージは何て言ってるのよ? っていうかメッセージの出しかたがわからんのか?
Konsoleでqtcreatorって打って(でいいのかな?)起動してみれ。
Error:うんこが漏れました
とか出てくるからそれ読んで原因究明。出てこないんならどこかに起動してる。
別のデスクトップとか。
0273デフォルトの名無しさん
2009/06/09(火) 05:30:07にOperaも入れてやれ。
0274デフォルトの名無しさん
2009/06/09(火) 05:32:47いろいろ調べているうちにさらに興味が湧いてきて
・・・ついに作ってみようかなと言う気になってきた俺が居る。
0275デフォルトの名無しさん
2009/06/09(火) 08:57:090276デフォルトの名無しさん
2009/06/09(火) 12:13:42ごめん、エラーメッセージのこと書き忘れてた(⊃д⊂)
Konsoleで
>qtcreator.bin
とやると、
即プロンプトが帰ってきて、エラーメッセージは表示されない。
(コンソールには、QObject: Do not delete object, 'unnamed', during its event handler!ってでる)
即プロンプトが帰ってくるのが落ちてるんだと思い込んでたけど、
Win上のQtcreatorをコマンドプロンプトで起動すると、同じように即プロンプトが帰ってきたから、
これは問題ないとおもひます。
qtcreator.binからqtcreator_process_stubを呼び出してるみたい。
という状況です(;´д⊂)
0277デフォルトの名無しさん
2009/06/09(火) 13:52:15*.proファイルのCONFIG変数にdebugを追加すればいいとあったんだけど、
自作プログラムでは-gがつくのに、QtCreatorでは付かないよ(;´д⊂)
なんでかな。
CFLAGとかに追加するのをやってみる。
0278デフォルトの名無しさん
2009/06/09(火) 14:41:35qmake qtcreator.pro -r CONFIG+=debug
で Makefile を作ってみると -g はついているけど。
0279デフォルトの名無しさん
2009/06/09(火) 14:47:15おおありがとう(;´д⊂)
やってみる
0280デフォルトの名無しさん
2009/06/09(火) 14:49:25-gつきでコンパイル始まったよ
ほんとありがとう!
0281デフォルトの名無しさん
2009/06/09(火) 18:42:26systen("beep");でも無音
G++ で書くと、どちらも鳴るのになぜ?
0282デフォルトの名無しさん
2009/06/09(火) 21:37:48"\a"って音を出すんだっけ?
音とは限らない何らかの信号をだせばいいんじゃなかったっけか?
まあ全然分からんから誰か頼むわ。
0284デフォルトの名無しさん
2009/06/09(火) 23:00:11*等を含んでいるものや、/が連続するようなパスなどは無効と判定したいのですが・・・
0285デフォルトの名無しさん
2009/06/10(水) 00:55:44QtCreatorをgdbでデバッグしてみると、
エラーで落ちてました。エラーメッセージを吐くコードがちゃんと
あったのですが、ターミナルにはログメッセージがでないようでした。
qDebug()でデバッグしようとしたら、その文字列さえもターミナルにでてこ無くて、
調べてみたところ、QtSingleApplicationでapp変数(return.exec()するやつ)
を生成してる行以降からqDebug()が出力されなくなってました。
QtSingleApplicationって前このスレで出てた、インスタンスを複数作れないよう制限するやつですよね。
これに関して何か知ってる方いませんか?(;´д⊂)
0286デフォルトの名無しさん
2009/06/10(水) 06:16:51QDir::exists, QFile::exists, QFileInfo::exists
0287デフォルトの名無しさん
2009/06/10(水) 11:56:42284じゃないが、それは実際にファイルがあるか調べるメソッドだよ
0288デフォルトの名無しさん
2009/06/10(水) 16:28:20qDebug()関係のメッセージが表示されない原因が分かりました。
Qtのコンパイルに-no-iconvを指定すると出来ましたヽ(´ー`)ノ
0289デフォルトの名無しさん
2009/06/10(水) 22:10:33メニューの項目の作り方についてご質問なのですが、
シグナルスロットを使用しない方法か、
どのメニューを選択しても同じ関数が呼ばれて、IDで識別するような方法ってありますでしょうか。
つまり、他のGUIライブラリのメニューのような使い方がしたいのです。
サンプルだとQActionを使ったシグナルスロットの方法しか書いてありませんでした。
これだと、メニューの項目数と同じだけ関数を用意しないとだめなので、
動的なメニューが作りにくいです(´Д⊂
0290デフォルトの名無しさん
2009/06/10(水) 23:02:16QAction を同じ SLOT につなげて、SLOTの中で
sender() を使ってどこからか判断したら。
QAction の文字列とかが欲しいなら
QAction *act = qobject_cast<QAction*>( sender() );
で sender() から QAction を取れるから、 act->text() とかも使える。
って、それでいいなら QMenu::triggered(QAction*) シグナル使えばいいのか。
0291デフォルトの名無しさん
2009/06/11(木) 14:29:58QTライブラリを -pg -static つきでコンパイルし直さないといけない
と英語のページで書いてあるように思えたのですが、本当ですか?
0292デフォルトの名無しさん
2009/06/11(木) 19:43:37Qtだからというのではなく、gprofとはそういうものです。
0293デフォルトの名無しさん
2009/06/11(木) 19:49:32お願いします。
ttp://www.doxygen.jp/docblocks.html
ここにある
>Qtスタイルを使うことができ、
>この例が示すように、C スタイルの
>コメント・ブロックが開いた直後に
>感嘆符 (!) を追加します。
/*!
* ... text ...
*/
って書いてあります。
私はDoxygenの知識はあるのですがQtに関しては全く無知です。
Qtにもドキュメント自動生成が出来たりするのですか?
0294デフォルトの名無しさん
2009/06/12(金) 01:47:31開発元内製のqdocでドキュメント生成されていて、Qt 4.4からqdocのソースが公開されています。
Qt1のソースコードを見ると、この頃から /*!でドキュメントがソースに埋込まれていて、.docもありますね。
0295デフォルトの名無しさん
2009/06/12(金) 12:35:04すみません、確認のためにもう一回お願いします。
解析対象のプログラムを-pg -static付きでコンパイルしないといけない、というのと
QTもスタティックライブラリにコンパイルしなおさないといけないのは分かってるのですが、
それだけではくQTライブラリも、-pg 付きでコンパイルしないといけないかどうか
の答えが292であってますでしょうか?
0296デフォルトの名無しさん
2009/06/12(金) 15:29:38Qt自体をコンパイルしなおさないと、qtの中にプロファイル用の
コードが入らないから、実際にはqtの中で時間を使っているのに
プロファイル結果ではその呼び出し元が時間を使っているように
見えてしまう。
それでも良ければ別にQtをコンパイルする必要もQtをスタティック
リンクする必要もないよ。
0297デフォルトの名無しさん
2009/06/12(金) 15:44:57おお、そうなのですか。
自作プログラムだけを-pgつけてコンパイルすると、
コアダンプするようになってしまって、QT側に何かしないといけない
と思い込んでおりました。
そもそもコアダンプすることはないのですね
ありがtごうございました。調べてみます。
0299デフォルトの名無しさん
2009/06/12(金) 21:32:53いけなくはないけれど、Qtの中がプロファイルできないから、結果はスカスカで、
どこで時間がかかっているかが分からないですよ。
0300デフォルトの名無しさん
2009/06/13(土) 02:05:11勿論、ソースでそのまま書けば作れるんだけど、
メイン画面やダイアログみたいに見ながら簡単に作りたい。
でも、GUIツールのところを見てもちょっと見当たらないんだよね。
0301デフォルトの名無しさん
2009/06/13(土) 02:06:05あ、ゴメン、大間違い。
コンテナボックスじゃなくて、コンテキストメニューのことです。
0302デフォルトの名無しさん
2009/06/13(土) 16:16:36getenvで確認しても環境変数自体は設定できているようなのですが、QTextEdit等に表示すると反映されていませんでした
何が問題なのでしょうか?
環境はWindowsXPでQt4.5.1を動的リンクして使っています
0303デフォルトの名無しさん
2009/06/13(土) 16:49:560304デフォルトの名無しさん
2009/06/13(土) 17:27:140305デフォルトの名無しさん
2009/06/14(日) 18:04:38俺も前に調べたんだけど、main関数の最初に環境変数書き換えても間に合わないみたい
実行時に変えたいならランチャーを作成するしかないんじゃないかな
0306デフォルトの名無しさん
2009/06/14(日) 23:20:45ttp://doc.qtsoftware.com/4.5/installation.html
0307デフォルトの名無しさん
2009/06/15(月) 21:26:20パス指定したらvisual studio EEでQt使えるよね?
0308デフォルトの名無しさん
2009/06/15(月) 21:29:02そりゃ使えるよ
0309デフォルトの名無しさん
2009/06/15(月) 22:02:54MianWindowないの関数を呼び出すと、関数までは飛べるんですが、
その後終了してしまいます。
Qtのsignal slotの流れが壊れてしまうのかと思うんですが、
何か、呼び出された側から、呼出し側の関数を呼ぶ方法がありますか?
0310309
2009/06/16(火) 21:21:240311デフォルトの名無しさん
2009/06/17(水) 20:41:44移すにはどうするの
タブを移動するには
0312デフォルトの名無しさん
2009/06/18(木) 20:43:11日本語入力を可能にするためのもの?
別アプリに文字列送信とかも出来るんでしょうか。
ググっても情報がないもんで...。
別アプリに送信できるとうれしいんですけど。
0313デフォルトの名無しさん
2009/06/18(木) 22:21:32Qt for Embedded Linux で Input Method を実装するためのもの。
X11 を使わない組み込みLinuxだとIMのためのプロトコルがないため、
このクラスを使って実装する。
X11 とか Windows で使っているなら無関係。
別アプリとの通信は X11 だと QtDBUS があるけど、
Windows や Mac だと IPC 使って自分で書かないとだめだったかも。
0314デフォルトの名無しさん
2009/06/18(木) 22:39:35ウィンドウ位置とタイトルを取得したいのですが・・・
0315デフォルトの名無しさん
2009/06/19(金) 15:57:490316デフォルトの名無しさん
2009/06/19(金) 19:40:50Qt for Embedded Linuxで日本語入力を実装するときに使います。
Qt for Embedded Linuxで、別アプリケーションに文字列送信したいなら、QCOPを使えば簡単にできます。
0318デフォルトの名無しさん
2009/06/19(金) 20:46:58できますか?
0319デフォルトの名無しさん
2009/06/20(土) 11:22:31contextmenuをキーにしてリファレンスマニュアルを探すと分かるでしょう。
0320デフォルトの名無しさん
2009/06/20(土) 17:00:110321デフォルトの名無しさん
2009/06/20(土) 17:39:36複数行ある文字列をModelにくわせたら、TreeViewも複数行で表示されてしまいます。
QTableViewでは、複数行ある文字列でも一行表示(改行以降の文字列は表示されない)されます。
でも罫線が表示されて微妙な感じです。
0322デフォルトの名無しさん
2009/06/20(土) 18:57:36QStyledItemDelegate を継承して、 displayText() を書き換えて表示する文字列を変更する。
0323デフォルトの名無しさん
2009/06/20(土) 21:54:39どこのでしょう。
0324デフォルトの名無しさん
2009/06/21(日) 01:31:09ありがとう。
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で開発しています。
0325デフォルトの名無しさん
2009/06/21(日) 02:07:00Mac は知らんけど、'\\n' だったらうまくいくとか?
自分でループ回すより QString::indexOf() を使うのおすすめ。
0326デフォルトの名無しさん
2009/06/21(日) 02:59:03int i = text.indexOf(QChar('\n')); // きちんとQChar('\n')は10として評価される
ret = text.left(i);
ちなみに、OSX上で、\\nってやってもダメでした。
0327デフォルトの名無しさん
2009/06/21(日) 03:06:05(マカーからすれば当たり前のことなのか。)
お騒がせしました。
0329デフォルトの名無しさん
2009/06/21(日) 12:56:18addItemはできるんですが、削除するにはどうしたらいいんですか?
ui->listWidget->removeItemWidget(item);
かと思ったんですが、削除できません。
0330デフォルトの名無しさん
2009/06/21(日) 13:51:17QListWidgetからのアイテムの削除は、takeItem()で。
removeItemWidget()は、アイテムに設定したウィジェットの削除です。
0332デフォルトの名無しさん
2009/06/21(日) 19:00:43QtWebkitを使いたいと思っているのですが
include時に'QtWebkit': No such file or directoryと表示が出ています。
両環境ともにlibなどはインストールされているっぽいのですが…。
何か予め設定が必要なのでしょうか?
0333デフォルトの名無しさん
2009/06/21(日) 19:15:27pro ファイルに
QT += webkit
はある?
0334331
2009/06/21(日) 19:42:59できました!!
プロジェクト作る時にちゃんと聞いてきてましたね…。
見逃してました。
教えていただきありがとうございました。
まだ触り始めですが色々できそうで楽しみです。
0335デフォルトの名無しさん
2009/06/22(月) 02:54:240336デフォルトの名無しさん
2009/06/22(月) 06:46:310337デフォルトの名無しさん
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>
をつかってます。
0338デフォルトの名無しさん
2009/06/22(月) 22:16:08QSplitterで縦に分割して、さらにQSplitterで横に分割すればできる。
QTDesignerでも可能
0339デフォルトの名無しさん
2009/06/22(月) 22:19:59本当に?
プログラマーの友 第八報:メモリリークと crtdbg.h
ttp://www7b.biglobe.ne.jp/~robe/pf/pf008.html
>この _CrtDumpMemoryLeaks ですが、この関数は正確には
>「この関数を呼んだ時点で開放されていないメモリの情報を表示する」関数です。
>たとえ main の最後に書いておいたとしても、
>cin などのグローバルオブジェクトで確保されたメモリは、
>まだデストラクタが呼ばれておらず開放されていないわけです。
>これまで検知してしまうので、
>メモリリークしていないにもかかわらずメモリリークしたと
>報告してしまうことがあります。
ここにあるような理由じゃないよね・・・?
0340デフォルトの名無しさん
2009/06/22(月) 23:01:24レスありがとうございます。
僕が使ったのは、
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
こっちのほうなので、影響はないぽいです。
使い方に問題がないのならば、
本当にメモリリークがあるぽいのかな?
0341デフォルトの名無しさん
2009/06/23(火) 01:07:08本当に >>337 だけで再現するの?
少なくとも >>337 だけじゃ実行できないよね?
実行できて問題が発生する最小限のコードを提示してもらわないと、
だれも君の手元のコードをデバッグできないよ。
0342デフォルトの名無しさん
2009/06/23(火) 05:06:12codepad
ttp://codepad.org/
ここに貼るのがオススメね。
0343デフォルトの名無しさん
2009/06/23(火) 16:36:46JIS配列の場合のみね。
ことえりの環境設定で、¥をバックスラッシュとして扱うよう変更出来る。
ただし、この場合、¥マークを出したい場合はoption + yとなる。
0344デフォルトの名無しさん
2009/06/23(火) 22:12:59ごもっともです。
症状の発生する簡単なプログラムを作りました。
>>342
ありがとうございます。
使用させていただきます。
http://codepad.org/HoQtNsqw
もしかしたら、ライブラリのコンパイルをミスったとか
そんなことないですよね・・・(泣)
他の方も同じ症状が発生するのかどうかが知りたいです。
0345デフォルトの名無しさん
2009/06/23(火) 22:25:34なんで実行できたんだろう
0346デフォルトの名無しさん
2009/06/23(火) 23:49:32いえいえ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);
}
0347デフォルトの名無しさん
2009/06/24(水) 00:15:07URLがQtだ
すげぇ
0348デフォルトの名無しさん
2009/06/24(水) 00:36:23そうじゃなくて
http://codepad.org/HoQtNsqw
コンパイルエラー出てるじゃん
0349デフォルトの名無しさん
2009/06/24(水) 00:40:51馬鹿?w
0350デフォルトの名無しさん
2009/06/24(水) 00:47:07ばかじゃなくて
うんこです
0351デフォルトの名無しさん
2009/06/24(水) 14:21:13> URLがQtだ
よく気付いたな。
すげぇ!
0352デフォルトの名無しさん
2009/06/25(木) 19:01:58Qt 4.5.2 & Qt Creator 1.2 release!
0353デフォルトの名無しさん
2009/06/25(木) 22:10:59コマンドラインランチャ作ろうと思って調べたけど分からんかった…
0354デフォルトの名無しさん
2009/06/25(木) 22:17:451台のPCで書いたQtのプログラムを、別のUbuntuPCにプロジェクトごと
コピーしたんですが、
/usr/bin/ld: cannot find -lfreetype
collect2:ld はステータス1で終了しました
のエラーでとまります。
何が原因でしょうか?
0355デフォルトの名無しさん
2009/06/25(木) 22:28:05ubuntu だと freetype-devel? とかいれればいいんでね
0356353
2009/06/25(木) 23:00:510357デフォルトの名無しさん
2009/06/25(木) 23:52:02QtCreator,MSアドインも。
0358デフォルトの名無しさん
2009/06/26(金) 20:41:27MSVC用に提供されてるlibファイルのリンクって出来ないですよね?
0359デフォルトの名無しさん
2009/06/26(金) 21:16:040360デフォルトの名無しさん
2009/06/27(土) 17:11:02これ見てる人いるのかな
誰も見てなかったらモチベーションが続かない・・・
0361デフォルトの名無しさん
2009/06/27(土) 17:44:120362デフォルトの名無しさん
2009/06/27(土) 18:53:32これ?
0363デフォルトの名無しさん
2009/06/27(土) 20:57:29それそれ
今思えば自分もリファレンス読むとき本家の英語版読むんだから
やる必要はなさそうだね
0364デフォルトの名無しさん
2009/06/27(土) 22:00:03俺は今 急がしくて新しいのに挑戦できないのだが
今度 チャンスを見つけて
Qtに浮気しようかなと思っている。
別のスレで結構良い出来だと言われているんで。
そんな俺にとっては翻訳してくれる神がいると絶対うれしい。
0365364
2009/06/27(土) 22:04:13このスレをROM専で見学している。
0366デフォルトの名無しさん
2009/06/27(土) 22:37:410367デフォルトの名無しさん
2009/06/27(土) 22:40:35どういうこった?
0368367
2009/06/28(日) 01:54:42ttp://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が使用できなくなる。。。
だれか、解決できた人いる?
0369デフォルトの名無しさん
2009/06/28(日) 06:09:25これエラーメッセージ
>platform\network\qt\QNetworkReplyHandler.h(0): Warning: No relevant classes found. No output generated.
でもQNetworkReplyHandler.hは4.5.1と中身一緒だから原因はさっぱり
0370デフォルトの名無しさん
2009/06/28(日) 08:50:57つttp://calmlight.s2.zmx.jp/Qt4Note/qt4_note_top.html
0371デフォルトの名無しさん
2009/06/28(日) 10:44:34QT4.5.2からVS2008に変えたんだけど、QT4.5.1はVS2008で問題なくビルドとおった?
少なくともQT4.5.1をVS2005でビルドしたときは問題なくビルドとおったけど。
0372デフォルトの名無しさん
2009/06/28(日) 10:51:54VS2008そのものではないけれど、Windows SDKつかって win32-msvc2008 でコンパイルは 4.5.1 では問題なかった。
webkit もコンパイルできた。
4.5.2 はまだトライしてなかったのでわからないけれど。
0373デフォルトの名無しさん
2009/06/28(日) 11:26:04全く同じやり方で通った
さっき4.5.1に戻したから間違いない
0374364
2009/06/28(日) 13:32:43Qt4 Note
は分かりやすそうなんだけど、内容の正確さが結構心配だわ。
同じサイトの
C++ Note
ttp://calmlight.s2.zmx.jp/CppNote/cplusplus_note.html
この辺が今ひとつ怪しい。Qtの解説は大丈夫なのかと。
0375デフォルトの名無しさん
2009/06/28(日) 13:37:01Forumでも既に問題になっているね。
返信がないから、原因はいまだ不明。
ttp://labs.trolltech.com/forums/topic/859
とりあえず、webkitをビルドしないように、-no-webkit付けて
しのぐとするか。
0376デフォルトの名無しさん
2009/06/28(日) 14:25:09触りもしないでごたくばっかり並べてるお前みたいなカスよりもよほどマシ
目障りだから消えろクズ
0377デフォルトの名無しさん
2009/06/28(日) 14:38:21まあまあ、そんなすぐ発火するなよ。
ごたくってどの辺が?
残念だが消える気は無い。
0378デフォルトの名無しさん
2009/06/28(日) 20:30:32氏ねじゃなく死ね
0379デフォルトの名無しさん
2009/06/28(日) 20:38:57・・・。
タイ━━━━||Φ|(|゚|∀|゚|)|Φ||━━━━ホ!!!
0380デフォルトの名無しさん
2009/06/28(日) 23:43:06英語のドキュメントを読めばいいじゃないの。
ソフトウェアを仕事や趣味にしているならば、英語のドキュメントを読んだ方が早く分かって楽しいですよ。
0381デフォルトの名無しさん
2009/06/29(月) 19:52:16ネットワーク処理が良くわからんっ!
もう少し勉強しよう…
0382デフォルトの名無しさん
2009/06/29(月) 23:39:42同意ですな。
英語のマニュアルも読めないような奴が新しいことに手を出すな、って。
0383デフォルトの名無しさん
2009/06/30(火) 05:35:40Unixコミュニティにありがちだけど
0384デフォルトの名無しさん
2009/06/30(火) 05:49:22まずその排斥をやめろという話。
0385デフォルトの名無しさん
2009/06/30(火) 09:51:54機械翻訳でもOKさ。
0386デフォルトの名無しさん
2009/06/30(火) 09:57:560387デフォルトの名無しさん
2009/06/30(火) 10:22:36>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.
だそうだ
0388デフォルトの名無しさん
2009/06/30(火) 12:56:14ムチャ言うなよw
0389デフォルトの名無しさん
2009/06/30(火) 13:15:260390デフォルトの名無しさん
2009/06/30(火) 13:15:310391デフォルトの名無しさん
2009/06/30(火) 15:19:150392デフォルトの名無しさん
2009/06/30(火) 15:33:35まで読んだ
0393デフォルトの名無しさん
2009/06/30(火) 15:42:59そんな真っ赤になるなよ
0394デフォルトの名無しさん
2009/06/30(火) 16:45:20という発想自体があり得ないよね。どんだけ低学歴なのかと。
0395デフォルトの名無しさん
2009/06/30(火) 18:32:14ユーザーが増えないとQtの先行きも不安だから
英語で読んでる俺も和訳を応援したいと思いつつ
「じゃあお前も手伝え」とか言われたら面倒だし
しかも手伝ったら「お前和訳へたくそ」とか「なにこの超訳wwこいつ読めてねえwww」とか言われて
ショックで立ち直れなくなったらイヤなので
あえてここは「そのくらい英語で読めよwww」と煽られる前に煽っておく
0396デフォルトの名無しさん
2009/06/30(火) 19:56:13ざっと数えてみると2万ページ近く。翻訳会社に出すと1億。
162億も出して買収したNokiaに是非翻訳してもらいたい。
0397デフォルトの名無しさん
2009/06/30(火) 20:39:41MainWindow w;
w.show();
return a.exec();
}
catch(char* err)
{
QMessageBox::warning(0, "System Error", err, QMessageBox::Ok);
}
としたら、エラー時突然死してしまいます。
Qtの場合catchはどこで取ればいいんでしょうか?
0398デフォルトの名無しさん
2009/06/30(火) 21:54:59pushButtonにフォーカスがあるときEnterでSLOTを動かすには?
0399デフォルトの名無しさん
2009/07/01(水) 00:18:21Qt自体は例外を使ってないから、自分でしっかりエラー処理しろ。
0400デフォルトの名無しさん
2009/07/01(水) 02:24:23多分
pushButton->setAutoDefault(true);
0401デフォルトの名無しさん
2009/07/01(水) 03:48:49それが正解
0403デフォルトの名無しさん
2009/07/01(水) 20:12:09できまいした。ありがとう
0404デフォルトの名無しさん
2009/07/01(水) 22:46:510405デフォルトの名無しさん
2009/07/02(木) 01:08:09おお、VS2008でQtWebkitのビルドが上手くいった。
公式サイト以外で、海外サイト(英語)でもいいんだけど、
QTのTipsみたいなのを纏めてる所って知ってる?
QTDemoのソースを参考にすれば、大抵のことはわかるんだけど、
纏まった資料としてどこかにないかなと。
もし無いようなら、wikiでも作って管理しようかなぁなんて思ってみたけど。
0406デフォルトの名無しさん
2009/07/02(木) 01:14:25なんとかWindows+VCの方向で解決したい。
0407デフォルトの名無しさん
2009/07/02(木) 05:41:51その理由は?
0408デフォルトの名無しさん
2009/07/02(木) 06:20:45なぜ?
0409デフォルトの名無しさん
2009/07/02(木) 09:53:08ここはどうですか。
http://www.qtcentre.org/
http://www.qtforum.org/
0410デフォルトの名無しさん
2009/07/02(木) 09:59:47mingw は ?
0411デフォルトの名無しさん
2009/07/02(木) 20:52:02ItemViewとItemWidgetはどう違うの?
0412デフォルトの名無しさん
2009/07/02(木) 23:26:45Q{List,Table,Tree}ViewとQ{List,Table,Tree}Widgetの違いのことですか。
0413デフォルトの名無しさん
2009/07/02(木) 23:32:44Q*ViewはQ*Modelと対で使う。Q*WidgetはQt3以前のアイテムベース。
リファレンスのModel/View Programmingくらい読んでおけ。
0414デフォルトの名無しさん
2009/07/03(金) 00:40:40http://pc12.2ch.net/test/read.cgi/tech/1221233882/
0415デフォルトの名無しさん
2009/07/03(金) 00:59:57>>410じゃないが、おまいさんは何が言いたいのだ
0416デフォルトの名無しさん
2009/07/03(金) 09:03:29そうだったらQ{LIst,Table,Tree}Widgetは、最初は簡単に使えます。
しかし、拡張は低いです。例えば、 内部に独自モデルを抱えていて
差替えができないので、機能を追加できなくなって行き詰まります
だから、最初からQ{List,Table,Tree}Viewを使うようにした方がよいです。
Qt4になったときにQ*Widgetを入れなければ後で困ることは減ったで
しょう。
0418デフォルトの名無しさん
2009/07/03(金) 11:25:25具体的には、シリアルポートの着信を監視したいんだけど、今はタイマーイベントで
見にいってるんですが。
Qtのイベント監視ルーチンに、ポート監視ルーチンを追加できないかと
0419デフォルトの名無しさん
2009/07/03(金) 12:53:35カスタムなイベントをハンドリングしたいということですね。
それならば、イベントフィルターを使えば可能です。
参考:http://doc.qtsoftware.com/4.5/eventsandfilters.html
0420デフォルトの名無しさん
2009/07/03(金) 12:55:16Windowsでシリアルポートならこれを見てみてはどうですか。
http://sourceforge.net/projects/qextserialport/
0421デフォルトの名無しさん
2009/07/03(金) 12:55:28日本語で桶
0422419
2009/07/03(金) 12:57:58QObject::event()をオーバーライドする方法もあります。
同様に419の参考に書いてあります。
0423デフォルトの名無しさん
2009/07/03(金) 13:41:41オレも云いたかったが、親切心を無下にできんと思って触れなかったのに
貴様KYだろ
0424デフォルトの名無しさん
2009/07/03(金) 18:07:15ダブルクリックでないことを確認するにはどうすればいいのでしょうか?
0425デフォルトの名無しさん
2009/07/04(土) 00:28:13自動翻訳か何かを使ってわざわざ書き込んでくれている外人さんと予想したが
0426デフォルトの名無しさん
2009/07/04(土) 04:17:51こちらの環境では、ダブルクリックをしたときは、mousePressEventが発生し、
さらにmouseDoubleClickEventが発生しているので、そちらもその状況にあると仮定。
まずタイマーを作り、シングルクリックイベントハンドラー内でそのタイマーをスタートさせ、
ダブルクリックの時間間隔より少し大きめの時間がたったときにシグナルを発するようにする。
このシグナルにハンドラーとなる別のスロットを接続する。
そしてその中で、ダブルクリックイベントが発生していないか確かめてから
シングルクリックに対する処理を実行すればよい。
0427デフォルトの名無しさん
2009/07/04(土) 04:19:42実装例
(ヘッダーファイル.h)
class QTimer;
//...
// データメンバー
QTimer* m_Timer;
bool m_IsDoubleClick;
0428デフォルトの名無しさん
2009/07/04(土) 04:21:58(実装ファイル.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()));
0429デフォルトの名無しさん
2009/07/04(土) 04:22:46void 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();
// ここにシングルクリックのときの処理を書く。
}
}
もっといい実装方法があるかもしれない。
なぜか少しもたつく。
0430デフォルトの名無しさん
2009/07/04(土) 04:47:19Bingo!
0431デフォルトの名無しさん
2009/07/04(土) 04:47:26訂正
プログラム実行中にユーザがダブルクリックの間隔を変える可能性があるので、
mousePressEvent()内でタイマーをスタートする前に
m_Timer->setInterval(qApp->doubleClickInterval() + 10);
を実行したほうがいいかも。
0432デフォルトの名無しさん
2009/07/04(土) 05:17:47427 428 429 431
ごめん。mouseReleaseEventに対応していなかった。
0433デフォルトの名無しさん
2009/07/04(土) 11:45:59>なぜか少しもたつく
ダブルクリック間隔よりも長く、シングルクリックでの動作が待たされるため、
シングルクリック操作時の動作がぎくしゃくしてしまいます。
従って、シングルクリックのときにのみ処理させることはできません。
416 の外人です。日本語を勉強しました。よくなったでしょうか。
0434デフォルトの名無しさん
2009/07/04(土) 11:50:58実際そういう実装方法は多いと思う
0435デフォルトの名無しさん
2009/07/04(土) 12:01:34>シングルクリックと仮定して動作して、ダブルクリックだったら取り消すって設計にできればそっちの方がいいね
でもそれだと、ダブルクリックだけ取得したいときに、さきにシングルクリックの処理が実行されてしまうのでは?
0436デフォルトの名無しさん
2009/07/04(土) 12:05:48区別して渡してくれるんだけど、あれってWindowsやDEからのイベント
だからなのかな?
0437435
2009/07/04(土) 12:22:16取り消します。
常に、ダブルクリックを無視するのではなく、そういう状況の時だけ無視するということですね。
0438デフォルトの名無しさん
2009/07/04(土) 12:49:07作りとしてマズいんじゃないか?人間は間違うものだし。
Windowsのexplorerにしても、
シングルクリック: 選択
ダブルクリック:(選択後に)実行
という一連の流れになってる。
0439デフォルトの名無しさん
2009/07/04(土) 12:54:28前回のシングルクリックからの間隔を判定して
動作を分けたらいいんでね?
0440デフォルトの名無しさん
2009/07/04(土) 12:56:090441デフォルトの名無しさん
2009/07/04(土) 12:59:22シングルクリックのときだけ処理をさせようとすると、
シングルクリックがもたついた動作になるんじゃないの。
0442デフォルトの名無しさん
2009/07/04(土) 13:02:11ダブルクリックイベントは有効にしておいて、
シングルクリックイベント側で、ダブルクリックと同等のものを作り
ダブルクリックと思われる間隔だったらダブルクリックイベントに渡してる
というものじゃないの?
そりゃもたつくとは思う
0443デフォルトの名無しさん
2009/07/04(土) 13:04:14ダブルクリック時にシングルクリックイベントが発生しないような
APIを使っていない限り、それは必然ではないか?
0444デフォルトの名無しさん
2009/07/04(土) 13:09:12そのAPIの中でダブルクリック待ち受け時間終了までシングルクリックの
イベントの発生を遅らせる必要があるから結局同じことだと思う。
0445デフォルトの名無しさん
2009/07/04(土) 13:25:500446デフォルトの名無しさん
2009/07/04(土) 13:28:10ダブルクリックイベント発生した際、
シングルクリックイベントを取り消せるなら、ね
0447デフォルトの名無しさん
2009/07/04(土) 13:33:07シングルクリックでコントロールキーが押されていたら、シングルクリックの処理をする。
ダブルクリックのときにコントロールキーが押されていたら何もしない、
コントロールキーが押されていなかったらダブルクリックの処理をする。
こんなようにしてもたつきを避けた方がよいのでないでしょうか。
0448デフォルトの名無しさん
2009/07/04(土) 13:37:19ダブルクリックした場合、mouseDoubleClickEventがオーバーライドされてれば
mousePressEvent
mouseDoubleClickEvent
の順で呼び出される。
オーバーライドされていなければ
mousePressEvent
mousePressEvent
と呼び出されるだけだからmousePressEventで分けるのは無意味では?
0449デフォルトの名無しさん
2009/07/04(土) 13:43:53状況2:ダブルクリックイベントだけ処理したいとき
状況3:シングルクリックとダブルクリックの両方に対してそれぞれの処理をしたいとき
状況1のとき
ダブルクリックイベントを無視。
状況2のとき
シングルクリックイベントを無視。
状況3のとき
どうあがこうとダブルクリックが発生する時間だけ待たないと、
最初のクリック時にダブルクリックが発生するか判断できない。
よって、このときはどうしてもシングルクリックに対する処理は遅れる。
よって、状況1と状況3があり、シングルクリックに対して処理を遅らせることができないときは、
それぞれの状況に合わせて処理を切り替えるしかない。
と思うけどあってる?
0450デフォルトの名無しさん
2009/07/04(土) 14:20:47だね
で、
>シングルクリックに対して処理を遅らせることができないときは、
>それぞれの状況に合わせて処理を切り替えるしかない。
これは>>447の案
>>439は
シングルクリックイベントの処理は
1回目クリックで一定間隔待機、
2回目クリックが一定間隔内に来たらダブルクリックの処理
一定間隔過ぎても2回目クリックが来なければそのままシングルクリックの処理
>>426は
毎回シングルクリックから時間計測し
ダブルクリックイベントと別にダブルクリックだったのか判定(2重判定?)
なのかな?
>>448
んー、いまいちよくわからない
解釈間違ってるかもしれないけど、
初回クリックがシングルなのか、ダブルのための1度目なのかそれで判定できる?
0451デフォルトの名無しさん
2009/07/04(土) 14:52:11>>439は、
mousePressEventが呼び出されたらタイマースタート
timeout前にmousePressEventが再度呼ばれたらダブルクリック
timeoutしたらシングルクリック
>>448は、
mousePressEventが呼び出されたらタイマースタート
timeout前にmouseDoubleClickEventが呼ばれたらダブルクリック
timeoutしたらシングルクリック
どっちでも実装できると思うけど、前者の方が多少コードが複雑になるから、
わざわざmouseDoubleClickEventを外す必要はないって話だと思う
全然関係ないこと言ってたらゴメン
0452デフォルトの名無しさん
2009/07/06(月) 01:22:270453デフォルトの名無しさん
2009/07/06(月) 01:39:260454デフォルトの名無しさん
2009/07/06(月) 09:47:17若干コンパイルが遅い気がしたんだけどこんなもんだっけ?
0455デフォルトの名無しさん
2009/07/06(月) 12:03:110456デフォルトの名無しさん
2009/07/06(月) 14:25:550457デフォルトの名無しさん
2009/07/06(月) 15:28:40mocが実行されるからその分遅いとか?
0458デフォルトの名無しさん
2009/07/06(月) 18:30:290459デフォルトの名無しさん
2009/07/06(月) 19:01:01ゲームとか?
0460デフォルトの名無しさん
2009/07/06(月) 19:08:15ダブルクリックの処理をしてるよな
0461デフォルトの名無しさん
2009/07/06(月) 19:13:44マルチメディアプレイヤーのプレイリストとか、エクセルとか
0462デフォルトの名無しさん
2009/07/06(月) 19:19:39何しようとしてたんだろう。今になると全然思い出せないから、発想がおかしかったんだろうな
0463デフォルトの名無しさん
2009/07/07(火) 00:30:27mocって一言で言って何?
0464デフォルトの名無しさん
2009/07/07(火) 06:20:31Meta-Object Compplier
QtのQObjectクラス(Qtのウィジットなど)のためにメタオブジェクト情報を生成する。
標準C++に対しての、付加機能。
ソースをmocに一度通して機能を付加して、C++のコンパイラーが許容するC++コードを生成する。
Qt開発ではこのプロセスが余計に必要になる。
標準C++ではない拡張をしていることに対して拒否反応を示す人がいるけれど、
ライブラリーに依存している以上そのライブラリーの付加機能があろうとなかろうと
あまり問題ないような気がする。
個人的な意見だけど。
参考
http://qt.linux-life.net/4/doc/ja/object.html
0465デフォルトの名無しさん
2009/07/07(火) 06:23:41>Qt開発ではこのプロセスが余計に必要になる。
Qt Creatorなどをつかっていれば(qmakeのお陰?)、mocを自動的に実行してくれるので
mocを意識しないで済む。
0466デフォルトの名無しさん
2009/07/07(火) 06:53:53>Meta-Object Compplier
ごめん。typoした。
Meta-Object Compiler
0467デフォルトの名無しさん
2009/07/07(火) 06:57:130468デフォルトの名無しさん
2009/07/07(火) 07:51:47moc,Qt, Qt Creatorなどをソースからビルドして最適化オプション指定すれば速くなるとか?
調べてないまま言っているけど。
0469デフォルトの名無しさん
2009/07/07(火) 08:27:20どのコンパイル方法と比べてどれくらい遅いですか?
Qt Creatorそのものは、コンパイルのための外部処理を呼出しているのだから、
Qt Cretaorでコンパイルが遅いならば、Qt Creatorなしでもコンンパイルが遅いはず。
0470デフォルトの名無しさん
2009/07/07(火) 08:42:100471デフォルトの名無しさん
2009/07/07(火) 09:39:39(たぶん、進捗表示用)
コンパイルを開始するまでが大きなプロジェクトだと時間がかかるな。
コンパイルが始まってからは普通にmakeするのとあまり変わらないだろうけど。
0472デフォルトの名無しさん
2009/07/07(火) 12:10:29なんでイベント-アクセプタを使用するの?
signal-slotじゃだめなの?
教えてください偉い人
0473デフォルトの名無しさん
2009/07/07(火) 12:24:34どっちも同じだから
0474デフォルトの名無しさん
2009/07/07(火) 13:32:280475デフォルトの名無しさん
2009/07/07(火) 13:43:340476デフォルトの名無しさん
2009/07/07(火) 14:22:52signal-slot は point-to-point な配線だ。親子関係を無視する。
それに比べ、イベントはどこかで捕まるまで階層構造を伝播する。
たとえば、ダイアログボックスの中にラベルがあったとき、ラベル上で
ダブルクリックすると、ラベルがダブルクリックを捕まえない限りは
自動で親のダイアログボックスにダブルクリックイベントが飛ぶ。
0477デフォルトの名無しさん
2009/07/07(火) 23:01:03・Qtデザイナーで任意のウィジェットのシグナルと
QDialog 内に新規作成したスロット名をコネクトしても
自動的にダイアログ.h とダイアログ.cpp 内に同じ名前のスロットは
作成してくれない。ので、自分で関数名から記述する必要がある。
よろしく
0478デフォルトの名無しさん
2009/07/08(水) 07:24:02Qt Creatorを使えば、.hと.cppにスロットが自動的に作成されます。
0479472
2009/07/08(水) 11:10:56イベントだとクラスの階層構造を辿っていくのですね。
signal-slotだと、親なら親、子なら子でインスタンスを指定する、と。
・signal-slotの方がセーフティー
・イベントの方が実装として適している
・どちらでもあまり違いはない
の3つ場面がありうるということだと理解しました。
0480デフォルトの名無しさん
2009/07/08(水) 13:23:550481デフォルトの名無しさん
2009/07/08(水) 14:38:430482デフォルトの名無しさん
2009/07/08(水) 15:56:56スケルトンやMakeファイルも自動生成されるから始めて使ったが、簡単だったよ。
0483デフォルトの名無しさん
2009/07/08(水) 21:58:100484デフォルトの名無しさん
2009/07/08(水) 22:00:55そんなやつがQt使うメリットないか
0485デフォルトの名無しさん
2009/07/08(水) 22:42:380487デフォルトの名無しさん
2009/07/09(木) 00:43:15eclipseって激重なのにね
0488デフォルトの名無しさん
2009/07/09(木) 00:44:440489デフォルトの名無しさん
2009/07/09(木) 00:50:01使い慣れた環境とかプラグインとかは重要だろ
俺もQtCreator使わずにEmacs使ってるし
0490デフォルトの名無しさん
2009/07/09(木) 00:55:42QtCreatorにFakeVimがついてて飛びついた
けど、QtDesigner使わずゴリゴリ書いちゃう派だから
あんまり意味のないことに気がついた
0491デフォルトの名無しさん
2009/07/09(木) 07:00:12FakeVimってなぁに?
0492デフォルトの名無しさん
2009/07/09(木) 07:30:06viエディタと同じキー操作で編集できるようになる機能。
0493デフォルトの名無しさん
2009/07/09(木) 07:51:45vimはviを拡張したもの。
0494デフォルトの名無しさん
2009/07/09(木) 14:22:44一つのプロジェクトで管理するようなことが出来そうだからEclipseを選んでみた。
開発に使えるプラットホームも選ばないし。
0495デフォルトの名無しさん
2009/07/09(木) 14:25:45で、それは達成出来たのか?
0496デフォルトの名無しさん
2009/07/09(木) 14:26:270497デフォルトの名無しさん
2009/07/09(木) 14:44:270498デフォルトの名無しさん
2009/07/09(木) 14:45:220499デフォルトの名無しさん
2009/07/09(木) 22:06:540500デフォルトの名無しさん
2009/07/09(木) 22:13:01>オープンソースのライセンス
もうちょっと勉強しようぜハニー!
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
0501デフォルトの名無しさん
2009/07/09(木) 22:15:290502デフォルトの名無しさん
2009/07/09(木) 22:22:24開示義務のあるやつはな。
GPLモノだとときどきFSFに訴訟されてるケースがある。
0503デフォルトの名無しさん
2009/07/09(木) 23:28:47逆のイメージも想像した方がいいかもな。
自分がオープンソースにしたコードが自分の自由にならなくなった場合とか。
作った奴がライセンスを決められる。使う奴はそれに従う。
最終的にはそういったこと。
0504デフォルトの名無しさん
2009/07/10(金) 00:04:350505デフォルトの名無しさん
2009/07/10(金) 00:20:53GPL違反してる奴を探してるからバレる
0506デフォルトの名無しさん
2009/07/10(金) 00:30:19ありがと
0507デフォルトの名無しさん
2009/07/10(金) 07:06:03> バイナリハッカー部隊
フイタ。
その知識を別の方面に使ってくれれば。。。
0508デフォルトの名無しさん
2009/07/10(金) 08:09:520509デフォルトの名無しさん
2009/07/10(金) 10:20:240510デフォルトの名無しさん
2009/07/10(金) 10:55:44見つかってないライセンス違反もかなり多いと思う。
それこそ関数ごとにアセンブリコード比較したら分かる可能性もあるが
最初からそこまでやるような暇人はいないと思う。
0511デフォルトの名無しさん
2009/07/10(金) 12:44:08ソース付きならセーフ?
0512デフォルトの名無しさん
2009/07/10(金) 13:07:49他行けよ
0513デフォルトの名無しさん
2009/07/10(金) 21:47:07ライセンスによるんじゃない?
ライセンス読まないとわからね。
0514デフォルトの名無しさん
2009/07/10(金) 22:12:00っつーかスレち
0515デフォルトの名無しさん
2009/07/10(金) 22:24:45スレチスマン
0516デフォルトの名無しさん
2009/07/10(金) 22:47:140517デフォルトの名無しさん
2009/07/11(土) 11:07:06http://www.google.co.jp/trends?q=Qt
http://www.google.co.jp/trends?q=gtk
0518デフォルトの名無しさん
2009/07/11(土) 11:17:270519デフォルトの名無しさん
2009/07/11(土) 13:34:58手動で古い方アンインストールしてから新しい方インストールするんですか?
0520デフォルトの名無しさん
2009/07/11(土) 20:24:17アップデートというのはないですね。Mac OS X SDKは、uninstallのスクリプトが入っています。
WindowsやLinuxはどうなんでしょう。
0521デフォルトの名無しさん
2009/07/11(土) 20:40:51Windows、LinuxともSDKには、アンインストーラーが入っています。
0523デフォルトの名無しさん
2009/07/13(月) 01:25:27public:
static const QString str0 = "str0";
static const QString str1 = "str1";
のように各種定数を集めたクラスを作成したいのですが、このような宣言は許されないのでしょうか? 型がintやdoubleの場合はコンパイルできるのですが、QStringになるとエラーを吐かれます。
何か解決方法があればよろしくお願いしますm(_ _)m
0524デフォルトの名無しさん
2009/07/13(月) 01:57:11定数ならcharでいいんじゃないか
0525デフォルトの名無しさん
2009/07/13(月) 02:03:50おいおい、Qt関係ないぞ。C++の基本だろ?
整数型以外のメンバをクラス定義内で初期化するのは不可能。
doubleもエラーになるはずだが。
以下のように、メンバの定義時に初期化すべし。
const QString Constants::str0 = "str0";
0526デフォルトの名無しさん
2009/07/13(月) 07:48:04定数を定義したいんだったら
#define HOGE "str0"
とかすれば、いいんじゃないでしょうか?
0527デフォルトの名無しさん
2009/07/13(月) 08:13:57プリプロセッサによる置き換えは、エラーのとき分かりにくいから定数にしておいたほうがいいのでは。
0528デフォルトの名無しさん
2009/07/13(月) 08:27:15訂正
○constなオブジェクト
×定数
0529デフォルトの名無しさん
2009/07/13(月) 08:34:51const QString Constants::str0 = "str0";
を実装ファイル(.cpp)に書けばよい。
0530デフォルトの名無しさん
2009/07/13(月) 09:35:350531デフォルトの名無しさん
2009/07/13(月) 13:04:36馬鹿か?日本語使えないならレスするなよ
0532デフォルトの名無しさん
2009/07/13(月) 13:38:48一体、どこの関数でやったらいいのでしょうか?
0533デフォルトの名無しさん
2009/07/13(月) 16:30:09QTextEdit使って、ログ表示しようとしてます。
append()使うと、最終行に追加していけるんですが、必ず改行が追加されてしまうので、
代わりに、moveCursor(QTextCursor::End)でカーソルを最終行に持っていき、
insertPlainText()をする方法にしました。それ自体はうまくいきました。
ですが、スクロールバーが最終行に移動しないので、関数呼び出して移動させようと思うのですが、
そういう関数が見当たりません。どなたかご存知ないでしょうか。
また、よりよい方法がありましたらご教授お願いします。
0534デフォルトの名無しさん
2009/07/13(月) 19:19:51Qtライブラリには無いのかな?
Qt Centreのスレッド「Grabbing a key in X11」の中のリンクより
LibQxtライブラリのQxtGlobalShortcutが使えるみたい。
http://doc.libqxt.org/latest/classQxtGlobalShortcut.html
でも、プラットフォーム独自のショートカットでアプリケーションをアクティブに
してもらってもいいような気がするんだけど、それだとダメなの?
0535デフォルトの名無しさん
2009/07/13(月) 20:30:32#include <QScrollBar>
QScrollBar* vScrollBar = m_Editor->verticalScrollBar();
vScrollBar->setSliderPosition(vScrollBar->maximum());
0536デフォルトの名無しさん
2009/07/13(月) 22:03:21ありがとうございます。 頑張ってみます。
わざわざアクティブにするのは、色々面倒だったので。
0537デフォルトの名無しさん
2009/07/14(火) 01:11:00Windows 9x 終了のお知らせ
0538デフォルトの名無しさん
2009/07/14(火) 01:21:31HDD寿命で壊れないか心配になったりしないのだろうか
0539デフォルトの名無しさん
2009/07/14(火) 06:59:33新しいHDDにインストールすればいい話では。
0540デフォルトの名無しさん
2009/07/14(火) 17:08:380541デフォルトの名無しさん
2009/07/14(火) 18:05:290542デフォルトの名無しさん
2009/07/14(火) 20:37:310543デフォルトの名無しさん
2009/07/14(火) 22:11:180544デフォルトの名無しさん
2009/07/15(水) 00:48:35Qt 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に入っているものです。
0545デフォルトの名無しさん
2009/07/15(水) 07:03:55サウンドを再生するためのPhononならあるけど、
録音関係はまだ実装されていないと思います。
0546デフォルトの名無しさん
2009/07/15(水) 16:25:56サウンド関係はJuceが充実しているね
http://www.rawmaterialsoftware.com/juce/
0547デフォルトの名無しさん
2009/07/16(木) 15:09:31日本語化されちゃってるよ。びっくりした。
0548デフォルトの名無しさん
2009/07/16(木) 16:52:230549デフォルトの名無しさん
2009/07/16(木) 17:21:43QImage::sizeよりもメモリ消費量の少ない方法はありますか?
0550549
2009/07/16(木) 20:59:10QImageReader::sizeならファイルサイズ分しか使いませんでした
0551デフォルトの名無しさん
2009/07/16(木) 21:31:10模範的な自決ありがとう。
後を行く人の助けになる。
0552デフォルトの名無しさん
2009/07/16(木) 21:52:090553デフォルトの名無しさん
2009/07/17(金) 09:18:100554デフォルトの名無しさん
2009/07/18(土) 23:51:150555デフォルトの名無しさん
2009/07/19(日) 02:00:430556デフォルトの名無しさん
2009/07/19(日) 02:00:490557デフォルトの名無しさん
2009/07/19(日) 09:50:00どのように使っていますか。staticなQPixmapに画像をロードして、QLabelで表示した場合では、
クラッシュせずにQLabelに画像が表示されるので、staticだからというだけでは落ちません。
0558555
2009/07/19(日) 20:09:05すいません、宣言ではなく定義でした。
以下の様にstaticでQPixmapを宣言した後定義を行うと、クラッシュします。
icons.h
public:
static QPixmap icon;
icons.cpp
QPixmap icons::icon = QPixmap();
いくつかのアイコンを起動時に読み込んで以後はそれを使用したいのですが・・・何か解決方法があればよろしくお願いします。
0559デフォルトの名無しさん
2009/07/19(日) 20:12:12どこで落ちるかデバッガで確認したの?
0560555
2009/07/19(日) 20:39:43>>559
icons.cpp
QPixmap icons::icon = QPixmap();
で落ちるようです。main()に入る前に落ちるのでデバッガで確認はできていませんが、初期化を行わない場合はmain()が実行されます。QPixmapのコンストラクタをデバッグする方法ってありますか? Qt Creatorを使用しています。
0561デフォルトの名無しさん
2009/07/19(日) 20:52:47Linux上(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クラスをシングルトン化したら?
0562555
2009/07/19(日) 21:16:54QPaintDevice系のクラスはQApplicationをインスタンス化した後に構築しなければならないのですね。原因がわかりました。
以下のようにシングルトンパターンを構成することで解決できました。ありがとうございました。
icons.h
private:
icons();
public:
static icons getIcons();
icons.cpp
icons getIcons(){
static icons icons;
return(icons);
}
0563デフォルトの名無しさん
2009/07/19(日) 21:23:16return(icons);
ここで値コピーされてるのでシングルトンになっていないのでは?
0564555
2009/07/19(日) 21:47:31iconsにstaticキーワードを付与してるので問題ないと思うのですが・・・間違ってますか?
C++をいじるのは初めてなんで自信ないです(^_^;)
0565デフォルトの名無しさん
2009/07/19(日) 22:08:11icons& getIcons() {...}
として参照を返すようにしないとオブジェクトがコピーされるよ。
最低Effective C++は読んだ方がいいよ。
0566デフォルトの名無しさん
2009/07/19(日) 22:15:34参照返しちゃだめですよ。QPixmapをnewするのもだめ。QPIxmapは、reference count付きのimplicit sharedですから。
Effective C++に書かれているように、こういうクラスはコピーされるように使います。
0567デフォルトの名無しさん
2009/07/19(日) 22:46:23単純にシングルトンは駄目、と言えばいい話だろ?
0568デフォルトの名無しさん
2009/07/19(日) 22:55:520569デフォルトの名無しさん
2009/07/20(月) 03:31:15違うよ。
0570デフォルトの名無しさん
2009/07/20(月) 04:02:11シングルトンを使えないのは事実。
それに加えて値渡ししか使ってはいけないというだけ。
0571デフォルトの名無しさん
2009/07/20(月) 08:12:57Javaの人なんだね。
自動変数とポインタを見抜けないと(C++を使うのは)難しい
0572デフォルトの名無しさん
2009/07/20(月) 20:44:57>自動変数とポインタを見抜けないと(C++を使うのは)難しい
それが見抜けない人は、
C++に限らずもはや何だって難しいと思うんだぜ。
0573デフォルトの名無しさん
2009/07/20(月) 20:48:43C++のガラパゴス仕様の異常性は有名なんだから。
0574デフォルトの名無しさん
2009/07/20(月) 20:49:58それが見抜けない(初心者という意味じゃなく、頭脳という意味で)レベルの人の場合、
いくらやさしい言語でもやっぱ厳しいんじゃないかと思ったのだが。
ま、いいや。
0575デフォルトの名無しさん
2009/07/20(月) 21:32:020576デフォルトの名無しさん
2009/07/20(月) 21:40:15Qtの商用ライセンスを持っていない場合、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.
この最後の一行は、商用ライセンスを持っていないと使用できないといっているの?
0577デフォルトの名無しさん
2009/07/20(月) 21:43:18商用ライセンス持ってる人はもっといいアドインがあるよ ってこと
今公開されてるVisual Studio Addin 1.01はLGPLで使用可能だよ
0578デフォルトの名無しさん
2009/07/20(月) 21:44:08リファレンスの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.
これもどう判断すればいいの?
0579デフォルトの名無しさん
2009/07/20(月) 22:20:22訳せばそのままだが
* オープンソースバージョンのQtは公式にはVisual Studioでの使用をサポートしません。
( Visual Studio でビルドしたバイナリをサポートしてほしい場合は商用版を使え )
* Visual Studio Integration は商用版Qtの一部として提供されます。
Visual Studio Integration と Visual Studio add-in は別物。
0580デフォルトの名無しさん
2009/07/20(月) 22:23:05>>Integration with Visual Studio is available as part of the Qt Commercial Editions.
ここで言ってるIntegrationって最近リリースされたVisual Studio Addinとは違うんじゃないのかな。
自分は>>576だけを読んで大丈夫だと思って使ってるんだけど
もしかしたら違うのかもしれない
0581デフォルトの名無しさん
2009/07/20(月) 22:26:45フリーの限定機能add-inではなく、フル機能Integrationは、商用版ユーザのみが使うことができるということです。
>>578
オープンソース版のQtは、Visual Studioで使えるかもしれないけれど正式サポートはしていません。
そして、Integration with Visual Studio (フリーのadd-inでないもの)は、商用版だけで利用可能です。ということ。
0582デフォルトの名無しさん
2009/07/20(月) 22:32:56Integrationとadd-inの区別がついていませんでした。
お騒がせしました。
ありがとうございました。
0583デフォルトの名無しさん
2009/07/20(月) 22:35:56お騒がせしました。
ありがとうございました。
0584デフォルトの名無しさん
2009/07/20(月) 22:55:44参照返しにして、デフォルトコンストラクタとコピーコンストラクタ、
それとコピー演算子をprivateにするのが、Singletonの普通の実装なんじゃない?
まあ、それにしてもQPixmapはコピーで返さないといけないけど。
>>570
Singletonが使えないってソースどこ?
0585584
2009/07/20(月) 23:00:50QPixmap自体のインスタンスを1つだけにするのが無理ってことか。
0586デフォルトの名無しさん
2009/07/21(火) 06:41:370587デフォルトの名無しさん
2009/07/21(火) 21:07:46Javaな人は、99.9999999%がCOBOLな人と同じだからね。
0588デフォルトの名無しさん
2009/07/22(水) 01:14:19寝る
0589デフォルトの名無しさん
2009/07/22(水) 11:01:492chで聞くより直接問い合わせたほうがいいんでない?
0590576,582
2009/07/22(水) 11:48:20Open Source LicenseでAdd-inが使用できるか知りたかったのです。
商用ライセンスは、持っていないのです。
0591590
2009/07/22(水) 11:52:06その辺が判断できなくて。
0592デフォルトの名無しさん
2009/07/26(日) 11:03:39どのエリアに移ったか知りたいのですが、
何か適当なシグナルやイベントハンドラーはありますか。
0593592
2009/07/26(日) 11:41:41自己解決しました。
ツールバーのmoveEvent()をハンドルし、QMainWindow::toolBarArea()
をコールするだけでした。
0594デフォルトの名無しさん
2009/07/26(日) 11:53:07またもや模範的な自決すばらしい。
0595デフォルトの名無しさん
2009/07/26(日) 12:12:580596デフォルトの名無しさん
2009/07/26(日) 13:39:05Graphics Viewでできます。
0597595
2009/07/26(日) 13:48:35ありがとうございます。
やってみます。
0598デフォルトの名無しさん
2009/07/26(日) 21:54:06オプションの[Qt4]→[Qt Versions]の自動検出したQtのデバッグヘルパの所に赤いバツ印がついてるんですが
ちなみにQt Creator 1.2.1のバイナリだけをダウンロードし
win32-msvc2005でリビルドしたQt 4.4.3で使っています
Qt Creatorでビルドもデバッグも問題なくできます
0599デフォルトの名無しさん
2009/07/27(月) 01:38:20デバッグヘルパは Qt Creator でデバッグ時に Qt のクラスの内容をわかりやすく表示するために使われる。
QString だとか QList とか。
SDK ではなく Creator をインストールした場合にバツ印があるのは問題ない。
その場合は「リビルド」ボタンを押してヘルパを作ってやるといい。
0600デフォルトの名無しさん
2009/07/27(月) 13:29:41あの「リビルド」ボタンはデバッグヘルパをビルドするためのボタンだったんですね
赤いバツ印も緑に変わりました
ありがとうございます。
0601デフォルトの名無しさん
2009/07/28(火) 19:57:59ボタンとボタンの間に線を引きたいのですがいい方法はありませんか?
QMenuのaddSeparatorみたいなイメージで、こんな風にしたいのですが…
layout->addWidget(button1);
layout->addWidget(button2);
layout->addSeparator();
layout->addWidget(button3);
0602デフォルトの名無しさん
2009/07/28(火) 20:09:38QFrameを使う。でframeShapeをQFrame::VLineかQFrame::HLineにすれば良い。
つーかQt Designerを使ってないのか?
0603デフォルトの名無しさん
2009/07/28(火) 20:35:23ありがとうございます。
frameShapeと合わせてframeShadowにQFrame::Sunkenを指定したら
思っていたような区切り線になりました。
Qt Designer使ってません…。
0604デフォルトの名無しさん
2009/07/28(火) 22:08:54Designerでどんなコードが出るかを調べながらやると早く覚えられますよ。
0605デフォルトの名無しさん
2009/07/28(火) 23:34:13どのように作るのが良いでしょうか?
複数のテーブルをそれらしく組み合わせるとか・・・・
良い方法があれば教えてください。よろしくお願いします。
0606デフォルトの名無しさん
2009/07/29(水) 10:44:43>複数のテーブルをそれらしく組み合わせるとか・・・・
それでいいような気がするけど。
0607デフォルトの名無しさん
2009/07/30(木) 10:30:04試してはないけれど、 Delegate を使って QModelIndex をうまくずらしてやれば
そちらでも対応できそうな気はする。
0608デフォルトの名無しさん
2009/07/30(木) 19:20:06QtアプリからはPlaySoundは使えないんでしょうかね?
0609デフォルトの名無しさん
2009/07/30(木) 22:10:18Windowsでも、Qtは、Windowsアプリケーションに過ぎません、
ちゃんとWindowsのプログラミングをすれば使えます。
0610デフォルトの名無しさん
2009/07/31(金) 13:01:370611デフォルトの名無しさん
2009/07/31(金) 16:06:59便利だけど、凝ったことをするには微妙。
0612デフォルトの名無しさん
2009/07/31(金) 16:08:12kwsk
0613デフォルトの名無しさん
2009/07/31(金) 16:31:52kwsk
0614デフォルトの名無しさん
2009/07/31(金) 17:02:530615デフォルトの名無しさん
2009/07/31(金) 17:40:13たとえば
* QDockWidget を使用する場合
* 画像の貼り付け(バックグランドの指定)など
コードとうまく組み合わせる必要があるのでそれなりに慣れはいる。
>>614
ui を public で公開してしまえばいいけど、設計としては勧めたくないな。
0616デフォルトの名無しさん
2009/07/31(金) 18:26:32kwsk
それだけじゃ何で不都合があるか分からん。
普通にDesigner使っても問題ないように思えるが。
0617デフォルトの名無しさん
2009/07/31(金) 19:05:23QDockWidget はドラッグ&ドロップで位置を変えられれないし(プロパティから変更はできる)、
二つのQDockWidgetをタブで同じエリアに配置するのもDesignerからはできなかったと思う。
大きさは変えても反映されない(こっちはQtの仕様上むずかしいが)。
Designer だけの問題ではないが、QDockWidgetを使いたい場合に希望通りの配置をするのは大変。
( アプリが使われ出したら saveState(), restoreState() を使うからいいんだろうけど。 )
画像の件はたとえばQWidgetの背景に画像を貼り付けたい場合にパレットで画像が指定できない。
パレットに画像を指定したい場合はコードで指定する必要がある。
基本の配置を作るのに Designer を使うのは便利なときも多いし、問題ないと思う。
ただ、ちょっと派手にしようと思ったりするとコードを書く必要が出てくるので、
GUIだけで「デザイン」をしたいと考えるなら微妙な時もある。
画面のどこまでを Designer で作りたいかだな。
0618デフォルトの名無しさん
2009/07/31(金) 19:12:290619デフォルトの名無しさん
2009/07/31(金) 22:20:45ずっと前から対応していますね。
0620デフォルトの名無しさん
2009/07/31(金) 22:22:29使える部分には、使えばいい。
0621デフォルトの名無しさん
2009/08/01(土) 00:18:55Containers の中ではなくて、レイアウトの方にある。
複数の Widget を選択した後に間に線と矢印のあるレイアウトを選択する。
0622デフォルトの名無しさん
2009/08/01(土) 05:37:47書いているのですが、一度ウィンドウを閉じてから開き直すような
動作になってしまいます。
Qt::WindowFlags flags = windowFlags();
flags ^= Qt::WindowStaysOnTopHint;
setWindowFlags(flags);
show();
一瞬ですがチラついて見える上、Windowsのタスクバー内の
アプリケーションの順番が変わってしまうのが気になるのですが
これを回避する書き方はないでしょうか?
0623デフォルトの名無しさん
2009/08/01(土) 13:14:09Widget::activateWindow(), QWidget::raise()は?
0624623
2009/08/01(土) 13:22:11Windows版ではそうなると書いてあった。
0625デフォルトの名無しさん
2009/08/01(土) 14:40:29uiにアクセスしたいクラスを、MainWindowクラスのfriendクラスに指定すれば良い
0626デフォルトの名無しさん
2009/08/01(土) 20:26:30Qtに限らずWindowsならそうなります。Windowsだから仕方ありません。
0627デフォルトの名無しさん
2009/08/01(土) 20:28:56そんな馬鹿なことしてはいけない。
0628デフォルトの名無しさん
2009/08/01(土) 23:19:08activateWindowの説明読んでみました。ウィンドウがアクティブじゃない状態で
呼ぶとアクティブにならずにタスクバーがチカチカするってことですよね。
アクティブな状態で呼ぶことを想定しているのでそこは問題ないんですが
メインウィンドウで呼ぶと一度閉じてしまう現象はよく分かりませんでした。
とりあえずこのままで我慢しておきます。
0629デフォルトの名無しさん
2009/08/01(土) 23:56:20ちょっとデータを取ってくるだけで Signals/Slots 使って非同期な処理
書くのって微妙に面倒なんだけど…。なんか使い方間違ってんのかな?
0630デフォルトの名無しさん
2009/08/02(日) 00:25:49QEventLoopを使うと良いと思う。
0631デフォルトの名無しさん
2009/08/02(日) 01:00:58おおー、使ってみます!
0632デフォルトの名無しさん
2009/08/03(月) 16:28:02今となっては情報古いでしょうか? 4.3準拠だそうですが。
0633デフォルトの名無しさん
2009/08/03(月) 17:06:01どのあたりの情報が欲しいのかによる。
1st が 4.1、2nd が 4.3 なので、その間に追加されたクラスの情報がピンポイントで欲しければ。
4.1でいいなら日本語版なり、英語版のpdfでいい。
WebKit とかの新しいところが欲しければ載ってないし、
Qt の基本でいいなら 1st でも十分。
4.2, 4.3の新機能は下記でチェック。
ttp://doc.qtsoftware.com/4.2/qt4-2-intro.html
ttp://doc.qtsoftware.com/4.3/qt4-3-intro.html
今は手元に 2nd の実物がないから詳細が知りたければどのクラスのことが知りたいか
書いておいてくれれば、明日には書けるかも。
0634デフォルトの名無しさん
2009/08/03(月) 17:21:02いや具体的にどのクラスが知りたいってことはなくて、移動中とか
ネットがない環境とかでパラパラめくるのに紙媒体が好みなので
買っておこうかなーと思ってるのです。Qt3版しか持ってないので。
解説されてるクラスが足りない程度なら問題ないんですが
「このサンプルソースは今のバージョンでは動かない」とか
そういう混乱するような点がないかどうかだけが知りたいです。
0635デフォルトの名無しさん
2009/08/03(月) 18:27:09Qt 4.x はソース/バイナリともにバックワードコンパチなので
基本的には古いバージョンのサンプルでも動作に問題はないはず。
動かして試したわけではないが。
ただ、QFtpやQHttpのように別のクラス(QNetworkAccessManager)が導入されて
使用が推奨されてないものがあったりはするので、
実際に自分でプログラミングするときには最新のドキュメントを
念のためにチェックするくらいはしておいた方がいい。
ハードカバーなのが個人的には好きだ。 > 2nd.
そういうことなら、良さそうな本を適当に選べばいいかと。
ttp://www.qtsoftware.com/developer/books
0636デフォルトの名無しさん
2009/08/03(月) 22:35:28それが、いろいろ動かない。changes の Important Behavior Changes を見ると、
4.4/4.5/4.6 は、ぞろぞろある。どのソフトウェアも変わらない。
0637デフォルトの名無しさん
2009/08/03(月) 23:43:13でもまあ主旨を考えると、本に書いてあるサンプル程度の基本的なものの動作が根本的には変わらないからいいんじゃないの
0638デフォルトの名無しさん
2009/08/06(木) 01:24:55(´ー`)ダッタライイナー
でもゼロじゃないみたいだ
もし出るなら速攻上司に申し出るんだけどな
業界そのものが、まだ1ヶ月も経ってない新米だけどw
0639デフォルトの名無しさん
2009/08/06(木) 03:01:26俺もよく妄想する。例えば QtGui だけ java で書いたやつ(android用)で、
他は C++ native で、C++ で書いた自前のアプリをビルドして動かすとかできたらなぁとか。
0640デフォルトの名無しさん
2009/08/07(金) 11:22:21私なら真逆の妄想をします。
QtCore,QtGui,QtNetworkを含むスマートフォンが出たらいいな、と。
0641デフォルトの名無しさん
2009/08/07(金) 11:35:57何のために買収したのか判らなくなるし。
0642デフォルトの名無しさん
2009/08/07(金) 14:12:330643デフォルトの名無しさん
2009/08/09(日) 01:09:59一向に日本に進出(日本が進出?)が進まず、
いまだに海外主流だから、日本で開発するケースなんて少なそうだしなぁ
0644デフォルトの名無しさん
2009/08/09(日) 21:04:18sizeHintを指定してもメニューバー分だけ小さくなってしまいます。
ttp://calmlight.s2.zmx.jp/Qt4Examples/Pixmap.html
の「(4)サイズヒント」で言っていることと同じだと思うのですが
これは既知のバグとしてこのページのように回避するしかないのでしょうか?
0645デフォルトの名無しさん
2009/08/09(日) 22:04:24メニューバーがあるからメニューバー分小さくなってるだけじゃない?
0646デフォルトの名無しさん
2009/08/09(日) 22:11:40ウィンドウじゃなくてウィジェットにサイズを指定しているのですが
そういうものなんですか?ウィジェットに200x200を指定したら、
ウィンドウ全体の高さは 200+メニューバーの高さ+ステータスバーの高さ
になってほしいんですが…。
0647デフォルトの名無しさん
2009/08/09(日) 22:39:19サイズポリシーはどうしてる?
最小サイズをどうしても指定したかったら setMinimumSize() を使うとか
setFixedSize() を使う手もあるけど。
0648デフォルトの名無しさん
2009/08/09(日) 22:56:49サイズポリシーは何も指定していません。
最小サイズや固定サイズじゃなくて、最初のデフォルトサイズだけ
指定したいんです。>>644のページと同じ方法で回避できるので
それほど問題ないのですが、他の人はどうしてるのかなと思って。
0649デフォルトの名無しさん
2009/08/11(火) 00:53:26qmakeで使う.proファイルに書いたVERSIONの値(アプリのバージョン番号)を
プログラムから参照する方法はありますか?
0650デフォルトの名無しさん
2009/08/11(火) 21:51:17「カーソル位置のシンボルの定義へ移動」が実行されますが、この動作って無効にできないんですか?
0651デフォルトの名無しさん
2009/08/12(水) 08:19:02タスクマネージャーの「プロセス」で見ても残ってないし,コマンドプロンプトから起動しても,何も
表示せずすぐ終了してしまう。
アンインストールして,PC再起動して再インストールしても二度と起動しなくなってしまった。
近くにもう一人似たような症状で起動しなくなった人がいる。
どなたか原因や対策をご存知ありませんか?ちなみにOSはWindows XP SP3。
0652デフォルトの名無しさん
2009/08/12(水) 10:11:54特にないので
DEFINES += APP_VERSION=\"$$VERSION\"
のようにしてマクロで受け取る。
0653デフォルトの名無しさん
2009/08/12(水) 10:19:45うちでは、ウイルス対策ソフトのウイルスバスターを使っていて、それが邪魔してたけど。
0654デフォルトの名無しさん
2009/08/12(水) 12:38:23心当たりはないけれど、以前に立ち上がっていたということなら
関連しそうなレジストリを消してみるとか、
アンインストール時に残ってるファイルがないかチェックしてみるとか。
0655デフォルトの名無しさん
2009/08/12(水) 15:55:590656デフォルトの名無しさん
2009/08/12(水) 16:35:060657デフォルトの名無しさん
2009/08/12(水) 18:03:04キー入力だと,
QWidget::keyPressEvent
をオーバライドする方法が頭に思い浮かぶのですが,
これはキーを押したり離したりしたタイミングで呼ばれますよね.
そうではなくて,周期的にキーの状態を知りたいと考えています.
0658657
2009/08/12(水) 18:08:18SDL + OpenGLで全画面表示.キーの状態を周期的に監視する
というようなソフトを,Qt + OpenGLの環境に移植できないかなと思いまして,
Qtの機能を調査しています.
0659デフォルトの名無しさん
2009/08/12(水) 18:11:56キーを押したり離したりしたタイミングでフラグ立てとけや
0660657
2009/08/12(水) 18:25:47返事ありがとうございます.
その方法だと,キーを押してから,
keyPressEvent
が呼ばれる潜時が気になるのですが,
最近のコンピュータでどれくらい遅延するもんなんですかね.
なんか図る良い方法ないかなぁ.
0661デフォルトの名無しさん
2009/08/12(水) 20:23:490662デフォルトの名無しさん
2009/08/12(水) 20:31:48フォーカスが離れたらフラグをリセットするだけじゃん
0663657
2009/08/12(水) 20:44:17QtでこれをラップしてポータブルになっていればHappyなんですけど.
まぁ,なれば#ifdefで場合分けすることにします.
0664デフォルトの名無しさん
2009/08/12(水) 22:51:16GetAsyncKeyState見たいなのがあるかどうかは分からないけど、
event()をオーバーライドして、キー入力を記録するようにして、
他の別の関数で記録を調べるようにしておけばいいんじゃない。
event()をオーバーライドした時は、QWidget::event()をコールするのを忘れずに。
0665デフォルトの名無しさん
2009/08/12(水) 22:52:46>>660
0666デフォルトの名無しさん
2009/08/12(水) 23:35:24なるほど、ありがとうございました。
0667デフォルトの名無しさん
2009/08/12(水) 23:51:53ttp://sourceforge.jp/magazine/09/08/12/0531207
0668651
2009/08/13(木) 08:19:50>>653
とりあえずノートン外してみたけど,残念ながら関係なかった。
>>654
アンインストール時に残ったファイルやフォルダは消してから再インストールしたんだけど,
やっぱりダメだった。
レジストリは Qt で検索すると,Quick Time関係が沢山引っ掛かるのでw注意深くやってみます。
0669デフォルトの名無しさん
2009/08/15(土) 00:07:43次期バージョンのLightWave COREもQtを組み込むらしい
GUIプラグインが作りやすいから採用しただそうな
0670デフォルトの名無しさん
2009/08/15(土) 06:54:56ゆとり?
0671デフォルトの名無しさん
2009/08/15(土) 11:16:49なんかMayaもQt採用っつう噂があったな。
0672デフォルトの名無しさん
2009/08/17(月) 02:26:23QWizardPageのfieldの設定関係のメソッドって、全部protectedになってて、
Qtcreatorがuiから作ったC++プログラムからは呼び出せない。
入力条件を満たした時だけ、次のページに行くボタンがenableになるようにしたいんだけど、
自前で作れってことなのかな?
まあ、Qtcreatorに拘らずに、ソースコードだけでゴリゴリ作ればすむ話なんだけど、
Qtcreatorだけでやりたいんだけよね。
みなさんどうやってます?
0673デフォルトの名無しさん
2009/08/17(月) 09:03:09利用しています。SDKとフレームワークはC++で記述され、
UIツールキットは業界標準であるTrollTech/Nokia社のQt
ツールキットを使用しています。
0674デフォルトの名無しさん
2009/08/17(月) 10:42:57QWizardの*.uiにゴリゴリ書くんじゃなくて、ページ毎に個別の*.uiを作成すればQtCreatorでも同じコードが書けるよ
0675デフォルトの名無しさん
2009/08/17(月) 23:37:20ああ、なるほど。
Qtcreatorで作られるQWizardのuiはあらかじめQPageWizardを
2ページ分含んでて、後からいくらでもページをui上で追加できるから
そういう発想は無かったなあ。
言われてみればそれで作れるね。サンクス。
0676デフォルトの名無しさん
2009/08/18(火) 15:46:39スライダーは縦のみで、横は使いません
QTextEdit::cursorForPosition()を使えばよいかと考えているのですが、もっとスマートな方法はありますか?
0677デフォルトの名無しさん
2009/08/18(火) 16:25:49QString text;
int num = slider->value();
QTextDocument *doc = textEdit->document();
QTextBlock block = doc->findBlockByLineNumber(num);
if (block.isValid())
text = block.text();
0678デフォルトの名無しさん
2009/08/18(火) 17:45:37わざわざソースまで書いてもらっておいて恐縮ですが、
QTextDocument::findBlockByLineNumber()の引数は行数なので、
QAbstractSlider::value()の値から行数に変換する手順が必要になると思います
それとドキュメントがブロック1個で構成されている場合は常にドキュメント全体を返してしまいます
0679デフォルトの名無しさん
2009/08/18(火) 20:54:43スライダーの位置を QTextEdit の何に対応させたいかで行数への変換方法は決まる。
スライダーを行に対応させるのでいいのなら slider->setMaximum( doc->lineCount() - 1 )
RichText で行の高さも気にしつつやるのなら、面倒だな。
その場合はスライダーの移動ステップをどうするかとかもあるが。
QTextBlock が複数行の時を気にするなら QTextBlock::firstLineNumber() と
QTextBlock::lineCount(), QTextBlock::layout(), QTextLayout, QTextLine
とか使ってなんとかなるはず。
やりたいことが曖昧なので、今書けるのはこの程度。
0680676
2009/08/18(火) 21:38:48取得したいのはQTextEditがスクロールバーを表示して部分的にテキストを表示している際の、現在画面に表示されている部分のテキストです
0681デフォルトの名無しさん
2009/08/19(水) 00:08:18http://www.pyside.org/
0682デフォルトの名無しさん
2009/08/19(水) 00:13:470683デフォルトの名無しさん
2009/08/19(水) 01:01:07出力するにはどうしたらいいの?
0684デフォルトの名無しさん
2009/08/19(水) 01:02:57sortItemsを使ってもソートができないんだよね。
アイコンだけの列をソートする方法ってある?
0685デフォルトの名無しさん
2009/08/19(水) 02:20:000686デフォルトの名無しさん
2009/08/19(水) 02:44:240687デフォルトの名無しさん
2009/08/19(水) 05:11:30>QTextEdit::cursorForPosition()を使えばよいかと考えているのですが、もっとスマートな方法はありますか?
これでいいんじゃない。
0688687
2009/08/19(水) 05:13:53QTextCursor beginCursor = cursorForPosition(QPoint(0,0));
QTextCursor endCursor = cursorForPosition(QPoint(width(), height() - fontMetrics().height()));
QTextCursor cursor = textCursor();
int currnet = cursor.position();
cursor.setPosition(beginCursor.position());
cursor.setPosition(endCursor.position()+1, QTextCursor::KeepAnchor);
QString selected = cursor.selectedText();
//setTextCursor(cursor); // その部分を選択状態にするとき。
0689688
2009/08/19(水) 05:16:07int currnet = cursor.position();
この行はいらない。
0690デフォルトの名無しさん
2009/08/19(水) 09:37:49やっぱり便利なんだよね?
0691682
2009/08/19(水) 12:35:510692デフォルトの名無しさん
2009/08/19(水) 12:43:57NokiaがRiverbankを買収してPyQtがLGPLになるのが理想だったんだけどな。
0693デフォルトの名無しさん
2009/08/21(金) 20:51:52デモのSimple Tree Model ExampleみたいにQAbstractItemModelから派生するのと
QStandardItemModelから派生させてQStandardItemにデータを持たすのはどっちがQt的にはいいの?
0694デフォルトの名無しさん
2009/08/22(土) 01:47:51これがエラーメッセージです。
Object::connect: No such slot QTextEdit::on_timer_timeout()
これは正常な動作ですか?
0695デフォルトの名無しさん
2009/08/22(土) 02:05:43「そんなスロットはないよ」と言ってきているから、
指定しているスロット名が定義と違っていたりしていない?
0696695
2009/08/22(土) 02:06:55クラス定義にQ_OBJECTは、書いた?
0698デフォルトの名無しさん
2009/08/22(土) 05:26:35どちらもありだと思うけれど。
その例のようにQAbstractItemModelだと、純粋仮想関数をオーバライドしなくてはならない。
QStandardItemModelでまにあうのならそちらを使うのも有りだと思う。
0699デフォルトの名無しさん
2009/08/22(土) 15:55:29ありがとう。どっちでもいいならQStandardItemModelで済ますよ。
0700デフォルトの名無しさん
2009/08/23(日) 21:17:030701デフォルトの名無しさん
2009/08/23(日) 22:32:35以下の2つの方法があると思う。
1.カスタムなドックウィジットを定義する。
2.QDockWidgetにイベントフィルターをインストールする。
0702デフォルトの名無しさん
2009/08/23(日) 22:52:512の方法にトライしてみようと思います
ありがとうございます
0703デフォルトの名無しさん
2009/08/23(日) 23:34:29それ使ったら、シグナル出さないイベントを捕捉するためにわざわざ元ウィジェットを継承したクラス作って、
mousePressedEvent()をオーバーライドして、って手間を省けるってこと?
0704デフォルトの名無しさん
2009/08/23(日) 23:47:42イベントフィルター。
イベントフィルターと呼ばれる、QObjectを継承したクラスを定義する。
このクラスで、eventFilter(QObject* object, QEvent* event)をオーバーライドする。
ここで、イベント処理を書く。
そして、このイベントフィルターを他のQWidgetにインストールする。
今だったら、docWidget->installEventFilter(mouseClickfilter)みたいに。
これで、dockWidgetにディスパッチされるイベントをイベントフィルターで処理できるようになる。
0705704
2009/08/23(日) 23:49:580706704
2009/08/24(月) 00:06:55カスタムクラスでeventFilter()を定義し、他のクラスのインスタンスにインストールすれば
他のクラスのイベントをハンドルできるクラスとなることができる。
インストールしたイベントフィルターを削除したいときは、removeEventFilter()をコールすればよい。
0707デフォルトの名無しさん
2009/08/24(月) 04:41:540708デフォルトの名無しさん
2009/08/24(月) 05:12:53何の?
0709デフォルトの名無しさん
2009/08/25(火) 08:36:30キー監視用のスレッド走らせればいいんじゃない?
0710デフォルトの名無しさん
2009/08/25(火) 09:59:18qtcreatorスクリプトファイルの方を実行すればよい。
0711名無し学生
2009/08/25(火) 10:34:31誰かお答えください。本当に助けてください。
1.Visual Basicの関数で数値を文字に直すCStr()とStr()の違いについて
2.戻り値の違いが確認できる方法を考え、戻り値の違いについて実際に確認し、
その確認方法と違いを具体的に述べよ。
注意:実際にやったことと、確認した違いを簡潔かつ具体的に書くこと。
3.下記の計算結果などから、Visual Basicで計算できる数値の桁数について考察をまとめ、
何故そのような制限があるかについて理由を答えよ
1) 48 x 100 - 81
2) 12 ÷ 9.3 x 247
3) 0.2 - 12 ÷ 69
4) -12 ÷ 100 + 100
0712デフォルトの名無しさん
2009/08/25(火) 10:52:23ユーザの方でスレッドをわざわざ作らずともハードのマルチコアを利用して並列処理してくれると
いうものですか?
0713デフォルトの名無しさん
2009/08/25(火) 11:21:19並列処理してくれるようでした。
0714デフォルトの名無しさん
2009/08/26(水) 01:15:09Qt 4.5.1/4.5.2の3rdparty/webkit/WebCore/Makefileに-O2があると
GoogleMapsがマウスでスクロールできません。
-O2を-O1に変えるとスクロールできます。
JavaScrptの処理に問題がありそうなところまでは
わかりましたが、JavaScriptのコードが複雑すぎて解析はあきらめました。
gcc 4.1.1を使ってますが、gccのバグですかね?
0715デフォルトの名無しさん
2009/08/26(水) 05:02:30>GoogleMapsがマウスでスクロールできません。
マウスでドラッグして地図をスクロールさせるということ?
0716デフォルトの名無しさん
2009/08/26(水) 08:19:40詳細な解説ありがとう
そうか、他のクラスのイベントを直接捕捉できるのか。便利だ。
0717デフォルトの名無しさん
2009/08/26(水) 23:45:14はい、そうです。
スクロールできずに、マウスカーソルが進入禁止マークになります。
0718デフォルトの名無しさん
2009/08/27(木) 01:56:57Qtについてるexampleのfancy browserで試してみたらどう?
この例題では、JavaScriptを拡張するためにソースを
読み込んでいるみたいから動かないかな?
0719デフォルトの名無しさん
2009/08/27(木) 03:21:43#include <QWebPage>
#include <QWebSettings>
QWebPage* webPage = webView->page();
QWebSettings* webSettings = webPage->settings();
webSettings->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
上記のように、DeveloperExtrasEnabledを設定すると、コンテキストメニューから
インスペクターを呼び出せるようになるから、そこで何かエラーがでてない?
0720デフォルトの名無しさん
2009/08/27(木) 05:27:36スロットを接続しています。日本語入力を確定するためにEnterを押すと
textChanged()シグナルが続けさまに2回発生します。
日本語入力にはuim, uim-xim, uim-anthyを使用しています。
Windows XP上で同じコードを実行すると、期待通りtextChanged()シグナルは
1回しか発生しません。Linux上で生じるこの結果は、バグですかね。
0721デフォルトの名無しさん
2009/08/27(木) 17:57:17古い話だが、
ttp://qt.gitorious.org/qt/qt/commit/8e8a75051a4053d4b536a96e2d05f1f9ddf05ee4
バグだったようで直してもらった。
ただし、4.5系にはまだ入ってないので 4.5.3 で直るかは不明。
4.6には入るとは思う。 -stable 系のブランチにはまだ反映されてないけれど…。
0722デフォルトの名無しさん
2009/08/28(金) 07:29:31QtとGTKとWXのどれが一番いいですか?
0723デフォルトの名無しさん
2009/08/28(金) 09:34:03ウィンドウの左上や、タスクバーに表示されるアイコンを
特定のものに設定するには、どうすれば良いのでしょうか?
WindowsのAPIを色々調べてみたのですが、イマイチ分からず…。
0724723
2009/08/28(金) 11:55:030725デフォルトの名無しさん
2009/08/28(金) 15:15:44Wx > Qt >>>> GTK
0726デフォルトの名無しさん
2009/08/28(金) 15:16:56Qt >>> WX >>>>>>>>> GTK
0727デフォルトの名無しさん
2009/08/28(金) 16:02:01Windows環境ならwxWidgets + Code::Blocksと,Qt + Qt Creatorを試してみてるけど,
それぞれ得失があるよ。
■wxWidgetsは,ライブラリを自分でビルドしなければならない。Code::Blocksは
バイナリ配布がある(MinGW版なら)。
■Code::BlocksはVC++で使う場合cdbデバッガへの対応がまだ不完全で,例えば
関数へのstep inがサポートされていない。MinGWの場合はgdbデバッガへの対応
はほぼ完璧。
■Qt/Qt CreatorはVC++で使う場合,両方とも自分でビルドしなければならない。
MinGWで使うならバイナリ配布がそのまま使えるから楽。
■Qtはビルド時の設定を.proファイルに手書きで書き込む必要がある。
Code::Blocksはその辺痒いところに手が届いている。
■RADツールの使い勝手は,好みや主観もあると思うがQt Creatorより
Code::Blocksの方がわかりやすいと俺は思う。
■wxWidgetsは日本語の情報が非常に少ないので調べるのが面倒。
■ちなみにMinGW g++はstd::への対応がまだ不完全なようで,
ちょっと試してみたところではwstringstreamがサポートされてなかった。
0728デフォルトの名無しさん
2009/08/28(金) 19:29:20wxWidget, GTKは使ったことないけれど、ざっと調べた限り以下のことが言える。
Qtは、クラスの抽象化がうまく行われていて、楽に少ないコードでプログラミングすることができる。
リファレンスが充実している(英語だけれど)。
商用、非商用問わず、多くの大きなプロジェクトにも使用されている。
そのOSネイティブのAPIを使っていているから、ユーザーから見てGUIに違和感を感じない。
GUI以外の機能も充実している。
組込系にも移植されている。
0729デフォルトの名無しさん
2009/08/28(金) 19:52:17これに関してはwxの方が上な気がする。Qtは微妙に独自感がある。
0730デフォルトの名無しさん
2009/08/28(金) 23:09:16何が?って言われると指摘できない微妙なものなんだけど
0731デフォルトの名無しさん
2009/08/28(金) 23:29:07GTKの立つ瀬がないなw
0732デフォルトの名無しさん
2009/08/29(土) 00:09:44やはりドキュメントが充実しているQtを勧めたい。
RADツールなんて慣れの問題だし。
0733デフォルトの名無しさん
2009/08/29(土) 01:12:53コンパイルエラーがでるので調べら、GTKではクラスの非staticメンバが使えないと判明。
ロジック部が実装済みだったので手戻りすることもできずキタナこれはと思った。
クラス対応版のもあるらしいけど、よく知らん。
0734デフォルトの名無しさん
2009/08/29(土) 02:17:01GTKmm
0735デフォルトの名無しさん
2009/08/29(土) 02:29:21gtk2hsを使って使い勝手が糞だからといってgtkが糞ではないのと同じ話。
実際gtkは普及率的にもかなりイケてる。もちろんgtkmmも。
個人的な感想ではwxよりは使いやすいと思うな。
0736デフォルトの名無しさん
2009/08/29(土) 04:03:07どのプラットフォームのとき?
Windows?、それともMacOS X?
0737デフォルトの名無しさん
2009/08/29(土) 10:35:45あれ?Qtって独自GUIじゃなかったっけ?
そいでwxはそれぞれのAPIを触るんでなかったか。
あとそれぞれのライブラリの違いは所詮、慣れの問題だと思う。
0738デフォルトの名無しさん
2009/08/29(土) 10:44:22GTKは果たして慣れなのか?
あと完全にAPIを呼び出すwxは
osが変わると微妙にパーツがずれることが
あるとか聞いたよ。
100%独自GUIのライブラリは、
個性ありすぎになるけどずれたりはしないとか。
0739デフォルトの名無しさん
2009/08/29(土) 10:47:380740デフォルトの名無しさん
2009/08/29(土) 10:58:500741デフォルトの名無しさん
2009/08/29(土) 16:22:15>あれ?Qtって独自GUIじゃなかったっけ?
http://qt.nokia.com/products
のQt Class LibrariesのAdvanced GUIのところに
Qt uses the native graphics APIs of each platform it supports,
taking full advantage of system resources and ensuring
that applications have native look and feel.
と書いてあるけど、これってどういう意味?
0742デフォルトの名無しさん
2009/08/29(土) 16:32:28http://doc.trolltech.com/4.5/gallery.html
ここにQt4からOSネイティブの様々なスタイルに対応していると書いてあります。
0743デフォルトの名無しさん
2009/08/29(土) 16:34:21Macだと多少独自部分が残っているところもあるが。
0744デフォルトの名無しさん
2009/08/29(土) 17:33:040745デフォルトの名無しさん
2009/08/29(土) 18:47:28ネイティブのAPIを使用している。
そして、それぞれをQtで管理できるようにコントロール(イベントへの対応)や
レイアウトなどは、Qt独自に実装している。
0746デフォルトの名無しさん
2009/08/29(土) 19:09:04俺が729で言ったのはWindowsの話。ステータスバーやメニューはOS標準と少し違う。
もしかしたらOS標準のを使う方法があるのかもしれないけど。
0747デフォルトの名無しさん
2009/08/29(土) 21:19:09yes i do
0748デフォルトの名無しさん
2009/08/29(土) 21:36:520749デフォルトの名無しさん
2009/08/29(土) 21:43:560750デフォルトの名無しさん
2009/08/29(土) 23:26:22多分、アイコンが違ったり、フォントの大きさが違ったり、
レイアウトの間隔が違ったりするからじゃない?
もしそうなら、それらはすべて設定可能。
でも、デフォルトでそうなってほしいけど。
0751デフォルトの名無しさん
2009/08/30(日) 00:24:00フォントの大きさやレイアウトの間隔だけなのかな?
例えばチェック可能にしたメニューの表示もWindows標準と違う。
別に大して気にならないけどね。
0752デフォルトの名無しさん
2009/08/30(日) 01:03:220753デフォルトの名無しさん
2009/09/03(木) 22:06:110754デフォルトの名無しさん
2009/09/05(土) 00:17:56pc11って板違い?でもないのか
こっちはDAT落ちだが
http://pc12.2ch.net/test/read.cgi/tech/1194158506/
0755デフォルトの名無しさん
2009/09/05(土) 07:41:58pc11って鯖違い。
0756デフォルトの名無しさん
2009/09/05(土) 09:23:380757デフォルトの名無しさん
2009/09/05(土) 09:24:490758デフォルトの名無しさん
2009/09/07(月) 10:01:34というエラーメッセージを抑制する方法を教えてください
0759デフォルトの名無しさん
2009/09/07(月) 13:14:06on_ で始まる名前のシグナルに接続していない?
0760デフォルトの名無しさん
2009/09/07(月) 22:14:27on_で始まる名前だから良くなかったのですか
ありがとうございました
0761759
2009/09/08(火) 05:43:42Qtには、シグナルとスロットを自動的に接続する仕組みがあって、
これを利用するとき、そのスロット名をon_で始まると決められているから
MOCが文句を言ってきている。
(参照)
ttp://doc.trolltech.com/4.5/qmetaobject.html#connectSlotsByName
ttp://doc.trolltech.com/4.5/designer-using-a-ui-file.html#automatic-connections
0762デフォルトの名無しさん
2009/09/08(火) 17:03:490763デフォルトの名無しさん
2009/09/09(水) 08:46:18MOCでなくてconnect。
0764デフォルトの名無しさん
2009/09/09(水) 09:15:08ごめん、その部分は推測で書いた。
0765デフォルトの名無しさん
2009/09/09(水) 15:08:42画像が大きすぎでQByteArrayでメモリを確保しきれていないのにそのまま処理が続行していたからでした。
(メモリが確保できなければエラーを出すべきという話は置いておいて)
画像のサイズを小さくするのも一つの方法だとして、大きな画像を扱うので
できれば、アプリ側を修正しようと思っています。
確保するサイズをいろいろ変更して試したところ127MBを越えたあたりぐらいでエラーになりました。
QByteArrayは127MBぐらいまでしか確保できない制限あるのでしょうか?
PCのメモリは2GBつんでいます。
0766デフォルトの名無しさん
2009/09/09(水) 20:56:040767デフォルトの名無しさん
2009/09/10(木) 00:50:01>>766
ttp://qt.nokia.com/images/products/screenshot-qt-creator-editor
0768デフォルトの名無しさん
2009/09/10(木) 04:12:33助言にならないけど、以下のことを考えた。
多分QByteArrayは、もっと大きなサイズを扱えると思う。4GBとか。
システム自体がメモリを食っているとか?
システム依存で、1つのプロセスに割り当てるメモリサイズが制限されているとか?
0769デフォルトの名無しさん
2009/09/10(木) 04:16:46色分けしてくれるよ。
ttp://doc.trolltech.com/qtcreator-1.2/index.html
0770768
2009/09/10(木) 04:57:290771768
2009/09/10(木) 06:25:28そこで同じような現象が起こるか確かめるといいんじゃない?
それで発生するようなら、QByteArray以外のオブジェクトで
同じように確保できるか調べてみればいいんじゃない?
0772766
2009/09/10(木) 07:18:50リンク先 拝見しました。
とてもよさ気な感じです。
ありがとうございました。
0773デフォルトの名無しさん
2009/09/10(木) 15:07:13QTextEdit::textCursor().block().lineCount()は、選択範囲を示してないようで常に1を返してくるのでダメでした。
0774デフォルトの名無しさん
2009/09/10(木) 17:48:47マジですか。128MB-管理用メモリ?で
きりが良い数字なので何かに制限があるのかなと。
こちらはWindowsなのでQByteArray外の制限の可能性もありそうですね。
調べてみます。
0775デフォルトの名無しさん
2009/09/10(木) 17:53:53もっと簡単にできるような気がするけど。
QTextDocument* doc = textEdit->document();
QTextCursor currentCursor = textEdit->textCursor();
const int firstPositon = currentCursor.selectionStart();
const int endPosition = currentCursor.selectionEnd();
QTextBlock firstBlock = doc->findBlock(firstPositon);
QTextBlock endBlock = doc->findBlock(endPosition);
qDebug() << endBlock.blockNumber() - firstBlock.blockNumber() + 1;
0776775
2009/09/10(木) 17:59:19勘違いしていた。
775は間違い。
0777デフォルトの名無しさん
2009/09/10(木) 20:05:21孫メニューが存在する、子メニューの上にカーソルを載せると
右側に孫メニューが展開されますが
カーソルを乗せた瞬間にすぐに孫メニューが展開するようにするにはどこを弄ればいいんでしょうか?
デフォルトだと展開されるまでに数百msの遅延があるので、すぐに展開されるようにしたい
0778デフォルトの名無しさん
2009/09/10(木) 20:23:36Qt Creatorで、ツール→フォームエディタ→プレビューと同じでしょうか。
一瞬で孫メニューが表示されていて、何回か試しても数百秒もかかることはありませんでした。
0779デフォルトの名無しさん
2009/09/10(木) 20:24:48窓の手とかで、スタートメニューの表示速度という項目で速度調節できるのを思い出した
0780デフォルトの名無しさん
2009/09/10(木) 20:31:180781デフォルトの名無しさん
2009/09/11(金) 07:13:10返信ありがとうございます。
実際私のほうで書いていただいたコードを試したところ
私の実装したい処理を問題なく実現できるようなので、使わせていただきます。
ありがとうございました。
0782776
2009/09/11(金) 08:44:161つのブロックが複数の行にまたがるときは、うまく機能しないと思われるので、
もしそうならば、修正が必要。
0783デフォルトの名無しさん
2009/09/12(土) 22:07:46それぞれのファイルをコピペしないとだめなの?
一括してプロジェクトを付けれないの?
0784デフォルトの名無しさん
2009/09/12(土) 22:16:53どのようにしたいかを具体的に書いてもらえますか。
テストとしたいって、動かしたいと言うことなら、Qt Demosがランチャになっていますよ。
0785デフォルトの名無しさん
2009/09/13(日) 06:58:23Qt Creatorを起動して、画面左の「ようこそ:Welcome」を選択し、中央に表示される3つの
タブ(:分かりにくいけど)から「Qt Creatorを始めよう:Gettign Started」を選択し、
さらに「Qtのサンプルプログラムを参照:Explore Qt Examples」のところのコンボボックスから
目的のサンプルを選べばそのプロジェクトを読み込んでくれる。
そこで、ソースも参照できるし、ビルドもすぐにできる。
0786785
2009/09/13(日) 07:07:43プロジェクトファイル(.pro)をQt Creatorで開いても同様のことができる。
785で書いた方法だと一部のexampleが表示されないことがあるみたい(今はどうかわからないけど)
。
0787デフォルトの名無しさん
2009/09/13(日) 15:59:31先に呼び出すと実行ファイル直下のcodecsディレクトリを読んでくれない
0788785
2009/09/13(日) 16:26:04ありがとうございました。
0789デフォルトの名無しさん
2009/09/13(日) 16:50:38QApplicationでロケール初期化などをしているから、文字コーデック関係は、
その後に使うべきだと思います。
0790788
2009/09/13(日) 17:40:43サンプルプログラムがインストールされていません になってました
Qt SDK for Linux/X11 32bit をダウンロードしたんですが
0791デフォルトの名無しさん
2009/09/13(日) 19:15:43Qt SDK for Linux/X11 32bit 2009.03を入れているけれど、サンプルプログラムが入っています。
0792788
2009/09/14(月) 12:28:39最インストールしてもだめでした。
examplesファルダ以下はありましたのでそこからコピーして
試してみます。
0793デフォルトの名無しさん
2009/09/14(月) 13:09:53どうしてもアイコンが付きません。
コードは下記のようになっています。
QString iconPath = "C:/tmp/sample.ico";
QIcon icon(iconPath);
if(icon.isNull()) {
// A
}
else {
// B
}
setWindowIcon(icon);
ちゃんとアイコンが取得できているかを調べるために
コードを上記のようにしてisNull()でチェックしてみましたが、
きちんと"B"の方を通るので、その点は問題ないようです。
どなたか原因等分かる方居られましたら、お願いします。
0794デフォルトの名無しさん
2009/09/14(月) 13:17:51コンパイルするとLinux用のGtk+の実行ファイルを作るようなものを
作ったんだけど、公開すると需要あるかな?
0795デフォルトの名無しさん
2009/09/14(月) 13:19:51要は、MFCなりWin32APIなりでソース書いてコンパイルすると
Gtkの実行ファイルと同じものができる。
だから、Linuxで動くんだ。これで事実上、VC++はRun anywhereになるんだけど・・
0796デフォルトの名無しさん
2009/09/14(月) 15:55:02Qtリソースシステムを使って、リソースコレクションファイルに
アイコンへのパスを記述すればいいかも。
その際、Q_INIT_RESOURCE()の記述を忘れずに。
0797793
2009/09/14(月) 17:29:59さっそくリソースシステムでもやってみたのですが…
やはりアイコンファイルが表示されない状態です。
…で、もう少し調べてみたところ、
Qtがインストールされているマシンでは正常にアイコンが表示されました。
それを踏まえて更に調べてみたところ、
どうやら"plugins/imageformats/"にあるqico4.dllが必要なことがわかりました。
(このファイルをリネームすると表示されなくなるので)
…が、インストールされていないマシンでもアイコンを表示させないといけないので、
qico4.dllをツール本体(exeファイル)と同じ箇所に置いて動作させてみたのですが、
やはりアイコンは表示されません。
qico4.dllの置き方が悪いのか、インストールされていないマシンにも
$QTDIR/plugins/imageformatsを作成して、ここにqico4.dllを置いておく、
といった方法を行わなければならないのでしょうか…?
詳しい方居られましたら、よろしくお願いします。
0798デフォルトの名無しさん
2009/09/14(月) 17:57:58コンパイラは何、VC++それともMinGW
0799793
2009/09/14(月) 18:33:21コンパイラはVC++(2008.NET)です。
0800デフォルトの名無しさん
2009/09/14(月) 18:40:100801デフォルトの名無しさん
2009/09/14(月) 18:40:56ツール本体と同じディレクトリじゃなくて、ツール本体のディレクトリの下に
plugins/imageformats/ というディレクトリを作ってみたら?
0802デフォルトの名無しさん
2009/09/14(月) 19:02:54Qt 4.5: Deploying Qt Applications
http://doc.trolltech.com/4.5/deployment.html
配布方法については、ここに詳しく書かれていますよ。
0803デフォルトの名無しさん
2009/09/14(月) 19:28:030804デフォルトの名無しさん
2009/09/14(月) 20:46:41SourceForgeの「Qt Creator 日本語化プロジェクト」のqt-creator-jp-win-1.0.0-jp-beta0.zipをダウンロードして解凍して、次はどうすれば???
qtcreator_ja_JP.qm あたりをどうにかすると良さそうなのですが
まったくドキュメントがなくさっぱりわかりません。
OSはFreeBSDです。どうかよろしくお願いします.
0805デフォルトの名無しさん
2009/09/14(月) 23:11:48Qt Creatorは、どうやってインストールしたの?
こちらの環境はLinuxだけど、インストール先のqtcreatorのディレクトリの中に
translationsというディレクトリがあり、その中にqtcreator_ja.qm
が入っているけど。
最近のソースやパッケージをインストールしたのなら、日本語化されているんじゃないかな。
*.qmで検索して、qtcreator_ja.qmなどのファイルがあるかまず確かめてみて、
qtcreator_ja.qmがあるようならば、ロケールが日本語になっていないからかも。
環境変数のLANGとか見ているみたいけど。下記の4番目のレスに書いてある。
ttp://www.qtcentre.org/forum/f-qt-tools-3/t-switching-qtcreator-to-english-22353.html/?highlight=translation
0806デフォルトの名無しさん
2009/09/14(月) 23:20:29http://gihyo.jp/dev/serial/01/qt-2009
0807デフォルトの名無しさん
2009/09/15(火) 00:42:13「Qt Creator日本語化プロジェクト」の成果は本家にフィードバックされているので、
Qt Creator 1.2.1 をベースに使うのを進める。
FreeBSD で動かすのに問題があるかは知らないが
ちゃんとビルド、インストールすればそのままで日本語化されてるはず。
# 誤訳もいくつかあるけどな。
0808デフォルトの名無しさん
2009/09/15(火) 01:08:46BSDでもソースからビルドすれば問題なさそう。
BSDは、正式にはサポート外になったみたいだけれど。
http://doc.trolltech.com/4.5/platform-notes-platforms.html
http://doc.trolltech.com/4.5/supported-platforms.html
0810デフォルトの名無しさん
2009/09/15(火) 01:15:26BSDは、Community Supported Platformsには含まれているから
ソースからビルドする分にはこれから先も問題なさそう。
0811デフォルトの名無しさん
2009/09/15(火) 08:53:44/usr/local/share/qtcreator/translations/qtcreator_ja.qm
環境変数は LANG=ja_JP.UTF-8 に設定してあります。
LANGの設定がこれではダメなのでしょうか?
// どーりでQtCreatorのメニューを探し回ってもないはずだ
0812デフォルトの名無しさん
2009/09/15(火) 08:58:17>環境変数は LANG=ja_JP.UTF-8 に設定してあります。
これなら、日本語になるはずなんだけど。
環境変数は問題なさそう。
0813793
2009/09/15(火) 09:02:46その方法も試してみましたが、ダメでした。
>>802
読んでみましたが、どうにも理解が難しく…
pluginsの配布辺りのことですよね。
qt.confが関わっているようですが、
これの活用方法がどうしても良く分かりません…。
0814793
2009/09/15(火) 09:42:19qt.confでpluginsの場所を指定すれば良かったのですね。
しかし、これだと配布物が色々と増えてしまう事になるのですが、
仕方ないのでしょうかね…。qt.confや/plugins/imageformats/qico4.dllなどの。
>>803
実行ファイルに埋め込むと、これらの配布は必要なくなるのでしょうか?
やり方がよく分かりませんが、ちょっと調べてみます。
レスしてくれた方々、ありがとうございました。
0815デフォルトの名無しさん
2009/09/15(火) 11:03:17実行ファイルに埋め込んでも .ico ファイルのままではプラグインは必要。
ttp://qt.nokia.com/doc/4.5/resources.html
アイコンを png に変更して試す方がいいかも。
png だとプラグインはいらないはず。
0816デフォルトの名無しさん
2009/09/15(火) 11:16:06こちらで最新のソースからビルドした版のQt Creatorでは、main.cppで、
qtTrPath、qtTrFile(:共にQStringローカル変数)が定義してあって、それぞれ
「qt内のtranslationsへのパス」、「翻訳ファイル名」が入っていた。
具体的には、
qtTrPathには、"/usr/local/Trolltech/Qt-4.7.0/translations"
qtTrFileには、"qt_ja_JP"となっており、qt_jp_JP.qmを参照している。
つまり、qtcreator_ja.qmではなく、qt_jp_JP.qmとなっていた。
ビルドしたときのmain.cppソースのqtTrFileの中を調べて、インストール先の
翻訳ファイルのファイル名を変更すれば日本語になると思う。
0817816
2009/09/15(火) 11:19:51>こちらで最新のソースからビルドした版のQt Creatorでは、main.cppで
訂正:最新の開発版のソース(安定坂ではない)
0818デフォルトの名無しさん
2009/09/15(火) 11:28:59そうですか。FreeBSDのportsに入っているQtCreatorがアホだということであきらめます。
ありがとうございました。
0819デフォルトの名無しさん
2009/09/15(火) 12:48:38816に書いてあるとおり、ファイル名が違っているだけかもしれないから、root権限があるのならば、
qtcreator_ja.qmを同じディレクトリ内にqt_jp_JP.qmとしてコピーしてみたら。
同ディレクトリにqt_jp_JP.qmがないときの話だけれど(間違って上書きしないように!)。
0820デフォルトの名無しさん
2009/09/15(火) 14:59:27ver 1.2からはQtライブラリ自体の翻訳ファイル(qt_ja_JP.qm)も必要になってます。
翻訳ファイルのロケール部分はja_JP、jaのどちらでも問題ないはずです。
0821818
2009/09/15(火) 16:59:28他の誰かが幸せになれるようにFreeBSD 7.2 でQtCreator導入の手順をまとめておきます。
==================================================
1. portsからmake install
# cd /usr/ports/devel/qtcreator
# make install
2. そのままだと(参照する翻訳ファイルの名前が間違えているので)日本語で表示されないのでリンクを張る
# cd /usr/local/share/qtcreator/translations
# ln -s qtcreator_ja.pm qt_ja_JP.qm
3. 環境変数のLANGを日本語ロケール(うちの場合はja_JP.UTF-8)にしてqtcreatorを立ち上げればメニュー等が日本語で表示される
# exports LANG=ja_JP.UTF-8
==================================================
0822818
2009/09/15(火) 17:06:22助けてくれた皆様本当にありがとうございました。
GUIプログラミングは本当に困っていて、どうしたものかと思ってましたが、
調べた限りではQtで何とかなりそうなのでQtをものにしたいです。
0823デフォルトの名無しさん
2009/09/15(火) 22:55:24http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1030312930
0824デフォルトの名無しさん
2009/09/16(水) 03:45:15>Windowsでは,GCC でのデバッグ実行時に,qDebug()で日本語を表示すると文字化けします。
>MinGWのGDBでは,GDB/MIを介すると文字化けしてしまうので,MinGWのGDBが原因の問題です。
あらー、MinGWの問題なのか・・・
0825デフォルトの名無しさん
2009/09/16(水) 09:09:32現在fedora11を使っていまして、「scribus」を使用しようと思っているのですが、ツール等の英語がプロポーショナルではない間延びした書体になっています。
そこでQtに依存しているらしく
#qtconfig-qt4
を実行しフォントを変えたのですが、「scribus」は変わらず、再度上記コマンドでチェックしようとすると、フォント設定が元に戻ってしまいます。
何方様か知恵をお借り出きればと思います。
宜しくお願いいたします。
0826デフォルトの名無しさん
2009/09/16(水) 09:56:51Scribus は、Qt 3 を使っているから、qtconfig-qt4 は効かないでしょう。
0827デフォルトの名無しさん
2009/09/16(水) 10:11:18自信ないけれど、
scribusはQt3を使っているからqt3用のqtconfigで
設定しないといけないんじゃない?
0828デフォルトの名無しさん
2009/09/16(水) 11:17:08デバッグ実行時は MinGW の問題だが、
通常実行時にもメッセージの出し方次第では日本語が出ない。
これは Qt側で 4.5 からqDebug周りの挙動が変わって
ASCII以外を受け付けるルートが減ったため。
char *utf8; QString qstr; のとき
OK:
qDeubg() << qstr;
qDebug("%s", utf8);
NG:
qDebug() << qstr.toUtf8();
qDebug() << qstr.toLocal8Bit();
qDebug(utf8);
0829デフォルトの名無しさん
2009/09/16(水) 15:16:43スクロールを続けているとある程度でメモリ消費が収まるので、プログラム側のメモリリークではないと思います。
また確保されたメモリ領域は時間が経つと少しずつ解放されて元に戻るようです。
プログラムに新たに追加したQTextEditでも同じ現象が起きてもうお手上げです・・・
0830デフォルトの名無しさん
2009/09/16(水) 16:46:27スクロールした部分をバッファに貯めているんじゃない?
正しい振る舞いのような気がするけど。
Qt3のときは、バッファサイズを指定するメソッドがあったみたいだけれど、
今時の環境では必要はないという判断でなくなったみたい。
もし、テキストがプレインテキストならQPlainTextEditというクラスもあるけど。
ただし、大して変わらないかもしれない。
また、Nokia製ではないけれどQCodeEditというのがGPLで公開されているみたいだけど。
0831デフォルトの名無しさん
2009/09/16(水) 17:28:43かなり増えるの?
0832829
2009/09/16(水) 18:44:45やっぱりバッファリングなんでしょうか
新規のプロジェクトではほとんど消費しなかったのでプログラム側を疑ってたんですが、
Qtが自動でバッファサイズを変えてるんでしょうかね?
そうなるともう完全にお手上げ・・・
QCodeEditは初めて聞いたんですが、今作っているものがHTMLよりなのでちょっと難しいかもしれないです
>>831
テキストの量に関係なく10MB前後増えます
増える前だとプログラム全体で20MB強ですから、かなりの量ですね
でも実際にはそこまでくまなくスクロールすることはまず無いので2,3MB程度で済むみたいです
0833デフォルトの名無しさん
2009/09/16(水) 20:55:15こちらはLinuxだけど、スクロールのためにそんなにメモリー量が増えるというのは再現しない。
スクロールしてもそんなに変わらない。
>テキストの量に関係なく10MB前後増えます
こちらでは、QTextEditのインスタンスを作成し、小さいテキストを表示させただけでは
こんなに増えない。
実は、append()やinsertPlainText()なんかでテキストを何回も細かく追加していて、
全部追加が終わっていないのに終わったと勘違いしているだけとか?
0834833
2009/09/16(水) 21:03:26undoのための情報を保持しなければならないので余計にメモリー量が増える。
0835829
2009/09/16(水) 21:39:31QPlastiqueStyleを指定しているとこの現象が起きるようです。
うちの環境で使用できる他のスタイル(QCDEStyle, QCleanlooksStyle, QMotifStyle, QWindowsStyle, QWindowsXPStyle)では問題ありませんでした。
実行環境はWindowsXP SP3です。
0836デフォルトの名無しさん
2009/09/16(水) 23:31:01>>827
遅くなりました。
ご返事、有難う御座いました。
QT3のGUIのConfig内、Fontタブで設定を変えたのですが、やはり変わりませんでした。
例えば文字の大きさなども一緒に変えてみましたが、まったく反応が内容です。
重々、宜しくお願いいたします。
0837デフォルトの名無しさん
2009/09/17(木) 09:25:48こちらはDebian LinuxのパッケージでインストールしたScribus1.3.3.13だけど、
デフォルトでメニューが日本語になっている。
Scribusの「ファイル」メニューから「設定...」を選んで、
表示されるダイアログの左の見出しの「全般」から「GUI」を選ぶと、
GUIで使用する「テーマ」、「言語」とか、「メニューのフォントサイズ」
なんかを指定できるよ。
これとqt3 configを設定すれば何とかならないかな。
よく分からないで書いているので、混乱させたのならごめん。
0838837
2009/09/17(木) 09:32:09英語にしたときの項目名
「設定...」-->「Preferences...」
「全般」-->「General」
それから、変更が適用されない時はScribusを再起動すればいいと思う。
0839デフォルトの名無しさん
2009/09/17(木) 15:43:19御返答、ありがとうございます。
仰る設定項目は扱いましたが、サイズこそは変わっても、フォントの種類はやはり変わりません。
日本語については問題ないのですが、英語がが間のびしています。(苦笑)
余談ですが、設定の左ペインが潰れていて、2文字分の幅しかありません。これも関連するトラブルでしょうか、、、
0840デフォルトの名無しさん
2009/09/17(木) 17:22:29以下のことはあっているかどうか分からないけど。
下記参考サイトによると、ホームディレクトリ以下の/.scribus内に設定ファイルがあるようなので、
それらを編集すれば変更できるかも?
KDE3のコントロールパネルから設定するのが一番のような気がするけど。
参考:
http://docs.scribus.net/index.php?lang=en&page=settings1
0841デフォルトの名無しさん
2009/09/19(土) 00:54:41ポインタのシリアライズがサポートされてないですね。
ポインタの配列などをシリアライズする良い方法ないでしょうか?
boostはポインタの追跡してくれたけども。
0842デフォルトの名無しさん
2009/09/19(土) 10:40:20>boostはポインタの追跡してくれたけども。
boostのことは詳しくないんだけれど、boostだと読み込み時にポインター変数を渡せば、
自動的にオブジェクトのインスタンスを生成して返してくれるような便利なものがあるの?
参考までに、クラス名は?
0843842
2009/09/19(土) 11:06:32下記によるとQDataStreamは、QVector<T>をシリアライズできるようだから
QVectorかQVectorのポインターに対応させれば楽ができそう。
http://qt.nokia.com/doc/4.5/datastreamformat.html
質問の内容とずれていたらごめん。
0844842
2009/09/19(土) 11:22:17自分で確保したポインターにこだわらないのなら上記の方法があると思う。
ポインタの配列などをシリアライズする良い方法ないでしょうか?
QVector<T*>に対応したtemplateのoperator<<()とoperator>>()を
書けば簡単に実現できると思うけど。
そんなことは十分承知の上で、聞いていたらごめん。
0845デフォルトの名無しさん
2009/09/20(日) 23:33:20初心者に最適な解説サイトってありますか?
0846デフォルトの名無しさん
2009/09/21(月) 08:57:01下記リファレンスのチュートリアルやexampleを参考にして
進めるのがいいのではないのかな(英語を読まないといけないけれど)。
http://qt.linux-life.net/4/doc/ja/index.html
http://doc.trolltech.com/4.5/index.html
でも、Qtの知識がないのならば、本の「入門 Qt 4 プログラミング」を買って、
一通り目を通したほうがいいと思うよ。日本語だし。
それから、分からないことがあれば、ここや他のところで聞けばいいんじゃないかな。
http://www.qtcentre.org/forum/
http://www.qtforum.org/
0848デフォルトの名無しさん
2009/09/22(火) 16:39:06QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
0849デフォルトの名無しさん
2009/09/22(火) 18:07:47Qt Designerでカスタムウイジェットを作るにはどうすれば良いですか?
ContainersのWidgetでエリアを指定すれば良いでしょうか?
その場合、cppやhファイルを自動生成できますか?
0850デフォルトの名無しさん
2009/09/22(火) 20:31:39ただ日本語を表示するだけなら
const char const*から、QString型に変換するQStringのstaticな関数、
QQString::fromUtf8()やQString::fromLocal8Bit()を使う手もあるけど、
これだと一々この長い記述が必要になる。
それに翻訳の仕組みが使えない。
0851デフォルトの名無しさん
2009/09/22(火) 20:58:42Qt Creatorを使っているのならば、メニューの「ファイル」ー>「新規作成...」
を選ぶ。
そして、表示されるダイアログからデザイナーフォームクラスを選んで基底クラスウィジット
を選べば、コンストラクターを含むソースファイルを自動生成してくれる。
Qt Creatorには、Qt Designerの機能も組み込まれているので、そこでソースとGUIフォームを
編集することが可能だけど。
0852デフォルトの名無しさん
2009/09/22(火) 21:23:06ありがとうございます。
この方法で、cpp、h、ui関連したカスタムウイジェットが出来そうですが、
このuiをMainWindowのセントラルウイジェットに組み込むにはどうすれば
良いでしょうか?
0853デフォルトの名無しさん
2009/09/22(火) 21:55:51まず、>>851で選択した基底クラスウィジェットと同じクラスウィジェットを新規にMainWindowのセントラルウィジェットに組み込む
組み込んだウィジェットを右クリックし、「格上げ先を指定」を選ぶ
「格上げされたクラス名」に自作したカスタムウィジェットのクラス名を入力、右の追加ボタン、下の格上げボタンの順に押す
おしまい
0854849
2009/09/22(火) 22:13:24同じクラスウイジェットを新規MainWindowのセントラルウィジェットに組み込む
とはどのようにすれば良いでしょうか?
たびたび、すいません。
0855デフォルトの名無しさん
2009/09/22(火) 23:09:04例えばQFrameをテンプレートとして選択した場合は、MainWindowにQFrameを追加する
何も考えずに一覧からQFrameをドラッグして適当な場所に追加すればよい
QFrameでなくても基底クラスなら問題ないので、QWidgetを追加してもよい
ちなみに格上げしてもQtCreator上の見た目は変わらないから、プログラムを実行して確認してね
0856849
2009/09/23(水) 07:24:28MainWindowのプロジェクトに 新規>Qtデザイナフォームクラス>QFrame で
プロジェクト内に、cpp h uiができました。
でも、ここからMainWindowにドラッグ出来ません。
>一覧表からQFrameからドラッグして
一覧表からって、サイドバー(プロジェクト、開いているファイル)でしょうか?
画面を左右に分割してMainWindowとQFrameを両方表示してドラッグしてみても
うまく行きません。
0857デフォルトの名無しさん
2009/09/23(水) 08:27:59「QFrame」を追加しなさいって言われてるのに「カスタムクラス」を追加しようとしてもうまく行く訳がない
カスタムクラスじゃなくて、別に新しく「QFrame」をMainWindowに追加するんです
一覧っていうのはQt Designerの左端にあるウィジェット一覧です
これで分からないなら諦めてQLayout::addWidgetやQBoxLayout::insertWidgetを使いなさい
0858デフォルトの名無しさん
2009/09/23(水) 08:34:25入っているけど、何が違うの?どっちが何用とかある?
0859デフォルトの名無しさん
2009/09/23(水) 10:00:39binのはVC++で作られたdllで、libのはMinGWで作られたdllになっている。こういう構成なので、
フォームエディタで、Designerプラグインを使うには、VC++とVC++でビルドしたQtが必要。
0860デフォルトの名無しさん
2009/09/23(水) 10:49:27なるほど。分かりやすい説明ありがとう。
0861デフォルトの名無しさん
2009/09/23(水) 11:59:32http://www.off-soft.net/ja/develop/qt.html
ここもよいですね。
0862851
2009/09/23(水) 18:23:27その順番で、MainWindowに既に作成したcpp h uiのクラスを組み込むには2つある。
1.853、857の人が言われているように格上げという機能を使う方法。
2.MainWindowのカスタムクラスでコードを使ってカスタムウィジットを配置する方法。
この場合、カスタムウィジットクラスはとカスタムメインウィジットは同じGUIフォームには出せない。
857の人の「QLayout::addWidgetやQBoxLayout::insertWidgetを使いなさい」というのは
こちらの方法を言っている。
分からなかったらまた聞いて。
0863851
2009/09/23(水) 18:27:21訂正
>この場合、カスタムウィジットクラスはとカスタムメインウィジットは同じGUIフォームには出せない。
この場合、カスタムウィジットクラスはとカスタムウィジットは同じGUIフォームには出せない。
デフォルトでカスタムメインウィジットはメインウィジットに既に配置されている。
0864デフォルトの名無しさん
2009/09/23(水) 21:00:48Qt Designerって、Qt API でコードをある程度書けるようになって、そこから楽になるためのツールだから、
Qt でどう書けばよいかを把握してから使った方がいいんじゃないの。
0865デフォルトの名無しさん
2009/09/23(水) 22:44:020866デフォルトの名無しさん
2009/09/24(木) 03:47:03これ以前の書き方からずいぶんと変わった?
QTを使っているらしいソフト(Posterazor)を
修正しようかと思っているんだけど
なんかコードがQT Creatorで生成されるものと違う気がする。
0867デフォルトの名無しさん
2009/09/24(木) 03:55:38GUI自動生成されるようになったのか?
0868デフォルトの名無しさん
2009/09/24(木) 07:59:520869デフォルトの名無しさん
2009/09/24(木) 10:27:310870デフォルトの名無しさん
2009/09/24(木) 13:18:30最新版というのは、安定版の最新版という意味ではなく
開発版の最新版という意味?
0871デフォルトの名無しさん
2009/09/24(木) 17:05:54日本語版をやってくれている人達は、頑張っているよ。
Qt の開発版のメッセージも更新されているから、きっと、Qt Creator も更新してもらえると思う。
0872デフォルトの名無しさん
2009/09/24(木) 19:02:24実行ファイルのリソースに埋め込んで使おうと思っているんですが
やっぱりこうするとQtライブラリの静的リンク扱いになって、ソフト本体もLGPLになってしまうんでしょうか?
0873デフォルトの名無しさん
2009/09/24(木) 21:32:550874デフォルトの名無しさん
2009/09/24(木) 21:55:01自分のソースにQtのLGPL版を静的リンクした場合、必ず自分のソースを公開する必要があるの。
>>2 にLGPLのときは、わざわざ動的リンク時と断ってソース公開が任意となっている。
また、前スレhttp://pc11.2ch.net/test/read.cgi/tech/1194158506/885n-
の885では、「Qt 4.5 以降のものならば LGPL の下で自分の作ったコードを公開せずに商用利
用はできる。ただし、ダイナミックリンクでなくてはならない。スタティック
の場合の条件は現実的でないから...」とある。現実的ではない、とは何のこと?
http://www.sra.co.jp/qt/licence/index.html#n002 によると、
「Qt LGPL 版をスタティックリンクした際には、独自開発部分の
ソースコードを配布するか、独自開発部分のオブジェクトを配布する必要があります。」
Qt LGPL版を、静的リンクさせて公開したいとき、自分で作った部分を実行形式で配布すれば
ソース公開をする必要がないの?
0875874
2009/09/24(木) 22:01:15「ライブラリAに静的リンクしたプログラムBを配布する場合、Bのソースコードまたは
オブジェクトコードの配布を拒否してはならない。(LGPLv2-6a、LGPLv3-4d0)」
とあるけど、これはどちらも拒否してはならないということを意味するの?
0876デフォルトの名無しさん
2009/09/24(木) 22:27:31LGPLのルールとしては>>875の通りで、アプリのソースを公開しなければ
ならないんだけど、NOKIAとしてはQtの独自開発部分だけを公開すれば
十分ですよ、という風に読める。
だけど、LGPLだと言ってるかぎりにおいては、NOKIAだけがソース公開の
請求元とは限らないので、バイナリを入手した他者がアプリのソース公開を
要求した場合どうするんだ、という問題はあるよね。
0877874
2009/09/24(木) 22:29:10>>Qt LGPL版を、静的リンクさせて公開したいとき、自分で作った部分を実行形式で配布すれば
ソース公開をする必要がないの?
Qt LGPL版を静的リンクさせて公開したいとき、ビルドしたときのQtのソースと、
自分で作った部分を実行形式で配布すればソース公開をする必要がないの?
もし、これが許されるとして、配布するときにパッケージを1つにする必要があるの?
例えば、ウェブサイトで2つリンクを貼って別々にダウロードできるようにするのは可能?
0878874
2009/09/24(木) 22:42:36Qt LGPL版を静的リンクさせて公開したいとき、
* Qtと自分のソースをビルドし、リンクした実行形式(そのまま使えるアプリケーション)。
* ビルドしたときのQtのソース
* 自分で作った部分のバイナリ(リンクできる形式のもの)
を配布すれば、自分のソース公開をする必要がないの?
0879874
2009/09/24(木) 22:47:01878で書いた方法が可能ならば、他者のソースの公開を受け付けなくてもいいのかな
と思っていた。
違うかもしれないけど。
0880デフォルトの名無しさん
2009/09/24(木) 22:50:31それでOK
昔、ネスケ4が同じようにオブジェクトファイルを公開していて、
Motifのバグで日本語処理がおかしかった部分をLesstifで直して、
Leシして、
Lesstifとネスケのオブジェクトをリンクさせるということが行われていた。
0881874
2009/09/24(木) 22:53:15前から疑問になっていたことが、やっと理解できた。
ありがとう。
0882デフォルトの名無しさん
2009/09/24(木) 23:00:11みんなありがとう。
0883デフォルトの名無しさん
2009/09/24(木) 23:39:55あまり変わらんのと違う?
0884デフォルトの名無しさん
2009/09/25(金) 00:00:170885デフォルトの名無しさん
2009/09/25(金) 00:01:22バイナリが1つになっているものを公開できるところがいい。
インストール時の設定ミス。依存ライブラリ(Dllを含む)の上書き変更を気にしないですむ。
ユーザーが混乱することを避けることができる。
0886デフォルトの名無しさん
2009/09/25(金) 08:30:27>>842
色々込み入った内容なのでBoostC++Librariesプログラミングなんか参考にして下さい。
0887デフォルトの名無しさん
2009/09/25(金) 09:14:22質問の意味が分からないんだけど。
shared pointerは、通常明示的なデストラクタ呼び出しを必要としないという
認識なんだけど。
0888デフォルトの名無しさん
2009/09/25(金) 09:55:12別の問題ですかね。
QObjectを継承したクラスでQSharedPointerのメンバを持たすと
テンプレート引数にした型の定義が必要になるのですけど。
boostのだと問題ないです。
0889デフォルトの名無しさん
2009/09/25(金) 09:58:31[参考]http://d.hatena.ne.jp/Cryolite/20060108
0890デフォルトの名無しさん
2009/09/25(金) 14:39:15>QObjectを継承したクラスでQSharedPointerのメンバを持たすと
>テンプレート引数にした型の定義が必要になるのですけど。
これの意味が分からないんだけど。
0891デフォルトの名無しさん
2009/09/25(金) 15:46:38ちょっと間違ってました。QObjectからの継承とは関係ないでした。
http://d.hatena.ne.jp/redboltz/20081003#1222991824
の内容と同じ問題です。
boost::shared_ptrはテンプレート引数の型がインラインのデストラク
タを持っていても問題ないのですけどQSharedPointerはboost::scoped_ptr
と同じ問題が起こるということです。
0892デフォルトの名無しさん
2009/09/25(金) 19:21:02こちらはLinux/g++なんだけど、簡単なサンプルで試した限りでは通ったけど。
QSharedPointer<IMPL>をポインタメンバーに持つクラスAにインライン関数ができないように
しなければならない。
例えば、こちらで作成した例では、クラスAにコピーコンストラクターと
代入演算子operator=()を定義する必要があった。
0893892
2009/09/25(金) 20:11:16インライン関数にしないために、クラスAのメンバー関数はすべて、
実装ファイルに定義する必要がある。
0894デフォルトの名無しさん
2009/09/25(金) 21:24:500895デフォルトの名無しさん
2009/09/26(土) 02:25:25> Posterazor は、Fltk では。
いえいえ、そっちじゃなくて、最新開発版です。
http://posterazor.git.sourceforge.net/git/gitweb.cgi?p=posterazor/posterazor;a=shortlog
http://www.qt-apps.org/content/show.php/PosteRazor?content=90431
1.9.5 is a preview version of the upcoming PosteRazor 2.
It is the Qt port of the good old PosteRazor 1 (see http://posterazor.sourceforge.net/).
After user tests and hopefully feedback, and with a few new features, PosteRazor 2 will be released.
0896デフォルトの名無しさん
2009/09/26(土) 20:15:08.uiの生成コードの使い方ということなら、Qt Creator 1.2の方法と違うけれど、
Posterazorの多重継承で使う方法は、Qt Creator 1.3からは選択できるようなっています。
0897デフォルトの名無しさん
2009/09/26(土) 22:14:25日本語のリファレンスがほしい・・・。
0898デフォルトの名無しさん
2009/09/26(土) 22:50:47下記のサイトの人が翻訳しているみたい。
でも一人でされているようで、あまり進んでいないみたい。
http://qt.linux-life.net/4/doc/ja/index.html
0899デフォルトの名無しさん
2009/09/26(土) 23:10:220900デフォルトの名無しさん
2009/09/27(日) 10:34:1440人集めましょう。
htmldocでA4にフォーマットしてみると20,175ページ。
翻訳期間を見積もってみると、1日A4/5ページ、1年200日の翻訳
をするとして、20年かかります。40人集れば、半年でできます。
バージョンアップは、10ヶ月前後毎なので、一度翻訳ができれば、
10〜20人が維持できれば、バージョンアップにも付いて行けそうです。
0901デフォルトの名無しさん
2009/09/27(日) 11:42:31翻訳者を募集するフォーム、意見を交換できるフォームを用意すればいいんじゃない。
例えば、SourceForge.jp見たいなところにプロジェクトを立ち上げるのもいいかも。
0902デフォルトの名無しさん
2009/09/27(日) 12:03:38と言ってみるテスト
0903デフォルトの名無しさん
2009/09/27(日) 12:59:12英語苦手だという人や、取り合えず早く知りたい、
誤解せず理解したい(誤訳があったらあれだけど)などのときには
たとえ英語が多少分かっても、翻訳版はありがたく感じると思う。
それに、それがいいことかどうかは別だけど、
ユーザーを増やすためには、必要なような気がする。
0904デフォルトの名無しさん
2009/09/27(日) 13:09:410905デフォルトの名無しさん
2009/09/27(日) 13:23:02画面上でいきなり翻訳できるのも便利かもしれないけど、
いきなり翻訳するのはけっこう勇気がいる。
あと、今のはバージョン管理がどうなっているのか分かりにくい。
0906デフォルトの名無しさん
2009/09/27(日) 13:41:56次の4.6のリファレンス、がらっと構成が変わっている。
0907デフォルトの名無しさん
2009/09/27(日) 14:30:460908デフォルトの名無しさん
2009/09/27(日) 14:51:400909デフォルトの名無しさん
2009/09/27(日) 21:33:36数千万は行きそう
0910デフォルトの名無しさん
2009/09/27(日) 21:49:590911デフォルトの名無しさん
2009/09/27(日) 22:47:021ページいくらだろうな?
ちょっとググってみてよ誰か。
って言ってみるテスト。
0912デフォルトの名無しさん
2009/09/27(日) 22:52:340913デフォルトの名無しさん
2009/09/27(日) 22:53:330914911
2009/09/27(日) 22:57:55高いw
しかもプログラミングの知識が必要だろうから
その辺、特殊な技術料とか取られそうな予感。
0915デフォルトの名無しさん
2009/09/28(月) 02:03:03ホストアプリケーションにリバースエンジニアリング禁止条項がある場合、LGPLに抵触する?
0916デフォルトの名無しさん
2009/09/28(月) 02:14:46・・・ってレスが2chに書かれたら安心して使うの?
0917デフォルトの名無しさん
2009/09/28(月) 02:31:050918デフォルトの名無しさん
2009/09/28(月) 02:48:28ホストのリバースエンジニアリング禁止が理由で
プラグイン開発者が訴えられる可能性はなくね?
0919デフォルトの名無しさん
2009/09/28(月) 02:53:41【殺しの】ライセンス【道で拾った】
http://pc12.2ch.net/test/read.cgi/tech/1045006087/
0920デフォルトの名無しさん
2009/09/28(月) 16:09:000921デフォルトの名無しさん
2009/09/28(月) 16:17:24・・・ってレスが2chに書かれたら安心して使うの?
0922デフォルトの名無しさん
2009/09/28(月) 16:22:03ソースと同じライセンスだと思う。ドキュメントの翻訳もソースコードの
再配布と同じでしょ。
0923デフォルトの名無しさん
2009/09/28(月) 16:50:46大丈夫と書かれても安心できないが、>>922のように根拠や付帯情報も
付け加えられる場合が多い。
そういうわけで、質問してその答えに対して検討していくスタイルも
有効ではないだろうか?
0924デフォルトの名無しさん
2009/09/28(月) 20:00:16そもそもLGPLedなアプリケーションとのリンク自体がNGなんじゃね?
0925デフォルトの名無しさん
2009/09/29(火) 08:00:280926デフォルトの名無しさん
2009/09/29(火) 11:21:17Fedora11でyum install qtcreatorしただけです。
環境変数LANGはja_JP.UTF-8にセットしてあります。
他何か悪そうなところはありますか
0927デフォルトの名無しさん
2009/09/29(火) 13:38:39Windowsを使っていないから
0928デフォルトの名無しさん
2009/09/29(火) 13:43:370929デフォルトの名無しさん
2009/09/29(火) 13:47:15821(必要なら804,805,807,811,816,819も見て)は見た?
0930デフォルトの名無しさん
2009/09/29(火) 13:47:17・Qt Creator v1.2以降じゃない
・Qtの翻訳ファイルがない or 見つからない
のどちらかが原因と思われます
0931デフォルトの名無しさん
2009/09/29(火) 14:50:18Linuxで使っているけど、ちゃんと日本語化されてるよ。
0932デフォルトの名無しさん
2009/09/29(火) 16:07:55ということは、日本語のリファレンスなどもあるのか?
0933デフォルトの名無しさん
2009/09/29(火) 16:16:57ない。
一部翻訳中のものならある。987以降で議論されている通り。
http://pc12.2ch.net/test/read.cgi/tech/1239996587/897n-
0934デフォルトの名無しさん
2009/09/29(火) 16:19:02訂正
987は897の間違い。
0935デフォルトの名無しさん
2009/09/29(火) 17:29:010936デフォルトの名無しさん
2009/09/29(火) 17:41:57速攻終わるぜw
0937デフォルトの名無しさん
2009/09/29(火) 18:07:47Qt Creator が日本語を表示するには
qtcreator_ja.qm と qt_ja_JP.qm の両方が必要なんだけど、
Fedora11 の qt-creator パッケージには qtcreator_*.qm が含まれてないので
日本語が表示できない。
qt.nokia.com から Qt Creator のパッケージを取ってきて $HOME の下に
インストールする方が早いと思う。
0938デフォルトの名無しさん
2009/09/29(火) 23:37:270939デフォルトの名無しさん
2009/09/30(水) 00:47:32使ってみました。素晴らしい。
0940デフォルトの名無しさん
2009/09/30(水) 20:59:40ウィンドウやボタンの色を換えるには?
0941デフォルトの名無しさん
2009/09/30(水) 23:00:090942デフォルトの名無しさん
2009/09/30(水) 23:00:32ウインドウのタイトルバーとはかスタイルを変えないとダメなのかもしれないけれど、
ウインドウの中とか、ボタンなどはpaletteという属性で選択できる。
でも個人的には、ソースコードを書いてスタイル切り替えるとかした方がいいような気がする。
あるいはカスタムスタイルクラスを定義するのも手かもしれない。
その方が統一がとれるしいいと思う。
0943942
2009/09/30(水) 23:03:12メニューの”フォーム”の”スタイルを指定してプレビュー”を選べばよい。
0944デフォルトの名無しさん
2009/10/01(木) 15:37:39たとえば、pushButtonを一つ置いて、go to slotメニューからclickedスロットを作ったとき
それを呼び出す、どこにコードが書かれているのかがわからない。
生成されたmocにはコードは書かれているが、これってヘッダファイルから自動作成だろ?
残った考えられる方法としては、pushButtonという名前のオブジェクトの
clickedスロットは、on_pushButton_clickedという名前になるって
決め打ちしか考えられないんだが、そういうことなんだろうか?
あと、あとからpushButtonからpushButton2に名前を変更したとき、
コードの方は自動的に変わってくれないし、スロットとの接続は切れてしまうのな。
名前きめ打ちということなら、スロットとの接続が切れるのは理解できる。
これを正しく元のようにつなげるには、スロットの定義と実装の名前を変えれば良いんだよね。
0945940
2009/10/01(木) 18:25:54でも、Createrからリビルドして実行してのもとのままです???
それと、Createrからuiを選んでDesignerを開くとメニュー>フォームが見当たらないんですが?
0946デフォルトの名無しさん
2009/10/01(木) 18:34:02ウィンドウのタイトルバーは、アプリケーションではなくて、ウィンドウシステムか
ウィンドウマネージャが表示しているので、アプリケーションからは変えられないですよ。
0947デフォルトの名無しさん
2009/10/01(木) 18:40:39on_* のスロットに繋げているのは、uic から生成される ui_*.h の中の QMetaObject::connectSlotsByName() です。
0948デフォルトの名無しさん
2009/10/01(木) 18:50:05947の人が答えたけど、補足する。
>QT Creatorってどうやって、シグナルとスロットをつなげてるの?
下記リファレンスに書いてあるけど、”on_オブジェクト名_シグナル名(Object* object)”
に当てはまるスロットが定義してあると、自動的につないでくれる。
http://doc.trolltech.com/4.5/qobject.html#auto-connection
http://doc.trolltech.com/4.5/qmetaobject.html#connectSlotsByName
>たとえば、pushButtonを一つ置いて、go to slotメニューからclickedスロットを作ったとき
>それを呼び出す、どこにコードが書かれているのかがわからない。
>生成されたmocにはコードは書かれているが、これってヘッダファイルから自動作成だろ?
GUIを定義したファイルであるフォームファイル(.ui)をソースコードに変換するツール
User Interface Compiler(uic)がメークファイルから呼ばれてui_の接頭文字がついた
ヘッダファイルが生成される。
http://doc.trolltech.com/4.5/uic.html#uic
0949948
2009/10/01(木) 18:51:44>>944
>残った考えられる方法としては、pushButtonという名前のオブジェクトの
>clickedスロットは、on_pushButton_clickedという名前になるって
>決め打ちしか考えられないんだが、そういうことなんだろうか?
上記の通りon_...に当てはまるスロットは自動的に接続してくれる。
>あと、あとからpushButtonからpushButton2に名前を変更したとき、
>コードの方は自動的に変わってくれないし、スロットとの接続は切れてしまうのな。
その場合、確かに自動的に切り変わってくれないし、自動的に接続ができない。
>名前きめ打ちということなら、スロットとの接続が切れるのは理解できる。
>これを正しく元のようにつなげるには、スロットの定義と実装の名前を変えれば良いんだよね。
ソースでスロットの名前定義、connect()による接続をすればいい。
実装の名前を変える、ってどういう意味?
0950デフォルトの名無しさん
2009/10/01(木) 18:53:07>ウィンドウのタイトルバーは、アプリケーションではなくて、ウィンドウシステムか
>ウィンドウマネージャが表示しているので、アプリケーションからは変えられないですよ。
勉強になりました。ありがとう。
0951デフォルトの名無しさん
2009/10/01(木) 19:35:48こちらの環境(LInux/X11)で確認したけど、Qt DesignerでもQt Createrに組み込まれた
Qt DesignerでもちゃんとPalletの変更が反映されたけど。
>...、スタイルを指定してプレビューすると変更されました。
Qt Designerのスタイルプレビュー機能は、あくまでプレビューするだけの機能で、
そこで選んだスタイルがファイルに適応されるわけではない。
>でも、Createrからリビルドして実行してのもとのままです???
コントロールなどの色が変わったのならば適応されていることになる。
0952デフォルトの名無しさん
2009/10/01(木) 19:36:25レスありがと。
ウェブの情報とか見てるとconnectでの接続の仕方は、QTの基礎だよって
感じで詳しく説明してあるのに、自動生成コードに無くて迷ったわw
最近のはずいぶんと変わっているんだな。関数名を見るとはスクリプト言語的だね。
connectSlotsByNameの実装ってどうなっているんだろう?
RTTIはつかわないようなことが書いてあったし、mocの
qt_meta_data_MainWindowとかqt_meta_stringdata_MainWindowが秘密の鍵なのかな。
> 実装の名前を変える、ってどういう意味?
開発中にオブジェクトの名前だけを変更したくなったとき
コードが自動で変わらないのであれば、どこを修正すればいいかという話。
関数名を見ているだけとわかったので、定義(ヘッダファイル)と実装(cppファイル)の
関数名を変えればいい。が答えだね。
0953951
2009/10/01(木) 19:36:29>>945
>それと、Createrからuiを選んでDesignerを開くとメニュー>フォームが見当たらないんですが?
ただ、フォームファイル(*.ui)ファイルをQt Creatorで開けば、組み込まれたDesignerが起動する。
でも、それをビルドするにはプロジェクトに登録する必要がある。
まず、プロジェクトファイルを開く。つぎに
ウインドウの左側に縦長に”モードセレクタ”と呼ばれるソースエディタとかデバッグ画面とかをきりかえる
ための領域があり、そこの”編集”を選んでエディタモードにする。
そしてそのモードセレクタのすぐ右にプロジェクトファイルやそこに登録されたファイルを表示するための
”サイドバー”という領域があるはず(無ければメニューの”ウインドウ”の”サイドバーを表示(Alt+0:ゼロ)”を選ぶか
画面したの四角くて白っぽく、中が四角く黒いくなっているアイコンをクリックする)。
表示されるプロジェクトファイルツリーのプロジェクト名の上で右クリック。
表示されるメニューの中から「既存のファイルを追加」を選んでフォーム定義ファイル(.ui)を
プロジェクトに追加する。
そして、そこに追加されたファイルをダブルクリックすれば、組込みのQt Designerでそのファイルを開いてくれる。
0954951
2009/10/01(木) 19:37:21>>945
注意しなければならないのは、どうもuiファイルの更新をちゃんと見てくれていない時があるので、
そのような時は、注意してMakefileやui_*.*などを削除してビルドし直せば良い
(大きいプロジェクトの場合は注意:ビルドし直しの時間がかかるから)。
あとは左下の”すべてをビルド”ボタンや”実効”ボタンを適宜押して
ビルドするなり、実行するなりすれば良い。
0955951
2009/10/01(木) 19:46:28>そのような時は、注意してMakefileやui_*.*などを削除してビルドし直せば良い
上記のui_*.*は、uicで自動的に生成されたファイルの方だから。
間違えてフォームのデータ*.uiを消さないように!!!!!!
0956デフォルトの名無しさん
2009/10/01(木) 19:47:410957945
2009/10/01(木) 20:03:06でも、ボタンのpalletを変更しても色が変わりません?
0958デフォルトの名無しさん
2009/10/01(木) 20:07:13>注意しなければならないのは、どうもuiファイルの更新をちゃんと見てくれていない時があるので、
.proから生成されたMakefileが依存関係を見ているので、.uiの更新をちゃんと見てくれないというのはあり得ないでしょう。
そういうことが起きるとしたら、保存をし忘れているのでないでしょうか。
0959デフォルトの名無しさん
2009/10/01(木) 20:17:08>メインウィンドウを選択してpalletを変更すると、色を変更できまいした。
>でも、ボタンのpalletを変更しても色が変わりません?
QMainWindowもウイジットだし、QPushButtonなので、
対象をアクティブにして(右上のツリーからオブジェクトを選択または
配置されている対象オブジェクトをクリック)から右側下に表示されるQWidget内の
Paletteを変更すればいい。
0960デフォルトの名無しさん
2009/10/01(木) 20:21:20>.proから生成されたMakefileが依存関係を見ているので、.uiの更新をちゃんと見てくれないというのはあり得ないでしょう。
>そういうことが起きるとしたら、保存をし忘れているのでないでしょうか。
原因側からないんだけど、こちらでは確かに反映されないときがある。
*.uiちゃんと保存をしているのにビルド結果に反映されない。
0961959
2009/10/01(木) 20:32:05ごめん。訂正。
>QMainWindowもウイジットだし、QPushButtonなので、
QMainWindowもウイジットだし、QPushButtonもウィジットなので、
0962デフォルトの名無しさん
2009/10/01(木) 20:43:29Windowsですか。
0963957
2009/10/01(木) 21:15:35やはり、Buttonを選択しプロパティのQWidgetのpalletのパレットの変更をクリック
簡易設定で、色を選んでるんですが、変わりませ
MainWindowの場合は、OKを押した段階で色が変わります?
0964デフォルトの名無しさん
2009/10/01(木) 22:59:38子Widgetは背景は基本的に親と同じのことが多いので、
自動的には描画しない。
autoFillBackground プロパティを true にすると反映されるはず。
ttp://qt.nokia.com/doc/4.5/qwidget.html#autoFillBackground-prop
それでだめならパレットのどれを変えたかを教えてクレイ。
0965デフォルトの名無しさん
2009/10/01(木) 23:00:48ttp://qt.nokia.com/about/news/qt-4.5.3-and-updated-visual-studio-add-in-released
0966デフォルトの名無しさん
2009/10/01(木) 23:14:03そのせいで、このシグナルでどこのコードが実行されるのか
コードが追いにくいわw
0967デフォルトの名無しさん
2009/10/02(金) 00:20:11こちらはUbuntuのベースになっているDebian GNU/Linuxなんだけれど、
ちゃんと色が変わるよ。
ちなみに、Qt CreatorやQt Designerはどうやってインストールしたの?
パッケージ、ソースからビルド、Qtのビルド済みのもの、
それともSDKに含まれているやつ ?
こちらはソースからビルドしたものと、ビルド済みのQt Creator 1.2.1を
使っているけど。
0968デフォルトの名無しさん
2009/10/02(金) 00:40:130969デフォルトの名無しさん
2009/10/02(金) 01:13:56何のヘルプ?
Qt Creatorでドキュメントを表示した時に、
マウスホイールでスクロールできないということ?
0970デフォルトの名無しさん
2009/10/02(金) 01:15:43そういうこと。Windows。
フォントもここだけ汚いし。
0971デフォルトの名無しさん
2009/10/02(金) 02:29:15Windows日本語版は、なぜか知らないけれど、デフォルトでアンチエイリアス機能が
効いていないからフォントが汚い。
0972971
2009/10/02(金) 02:40:21Qt Creatorの所為ではなく、OSがそうなっているという意味で。
0973963
2009/10/02(金) 07:59:47Ubuntu 9.04 Qt4.5.2 Creater1.2.1
さっき気づいたんだけど、パレットを変更ダイアログで
全てのパレットを変更をチェックして、全ての項目に色を
設定しても、下のプレビューウィンドウのPushButtonのテキストの背景も
変化してませんでした。
autoFillBuckgroundをチェックしても変わりませんでした。
palletの項目からはPushButtonのテキスト、背景色を変更できない?
0974デフォルトの名無しさん
2009/10/02(金) 08:19:16以前からのコールバックより追い難くなるとは思えないけれど、
他の追い易いのを具体的に教えてもらえますか。
0975デフォルトの名無しさん
2009/10/02(金) 09:02:20>Ubuntu 9.04 Qt4.5.2 Creater1.2.1
環境は分かった。
一回整理すると、
*やりたいことは
Windowやそこに配置されたPushButtonの色を変えたい。
paletteを変更して変える。
*状況は
WindowもPushButtonも色が変わらない。
これであってる?
0976975
2009/10/02(金) 09:20:24回答したことの訂正というか補足がある。
メインウインドウを作成した場合、デフォルトでメインウインドウと
それ以外のセントラルウィジット、メニュー、ツールバー
などが配置されている。
メインウインドウも含めて、全てQWidgetを継承しているから
それぞれがpalette属性を持っている。
そして、デフォルトで親の属性は子に継承(inherited)されるから、
例えば、セントラルウィジットの中に何もない状態で
セントラルウィジットのpaletteを変え(色を変え)、
そのあとPushButtonを配置すると、そのボタンはセントラルウィジットの
palette属性の色が使われるのでPushButtonの色が変わる。
0977975
2009/10/02(金) 09:24:01繰り返しになって悪いんだけど、
palette属性が複数個存在していることは理解している?
0978975
2009/10/02(金) 09:25:49ごめん訂正。975は973の間違い。
>>973
繰り返しになって悪いんだけど、
palette属性が複数個存在していることは理解している?
0979973
2009/10/02(金) 10:09:46Mainwindow>CentralWidget>PushButtonとそれぞれがPalletを属性を継承しながら
独自の属性を持ってる、でそれぞれの属性はアクティブ、非アクティブ、無効時
の属性が選択できるってことですよね
現状では、CentralWidgetの属性を変更後、PushButtonを配置すると属性は継承されてます。
でも、DesignerでCentralWidgetの属性を変更して背景色を変更すると、色は変わりますが
パレットの変更ダイアログのプレビュウィンドウのPushButtonは変化せず
なおかつ、リビルド実行するとセントラルウイジェットの色も元のまま
と言う状況です。
0980デフォルトの名無しさん
2009/10/02(金) 12:15:36>でも、DesignerでCentralWidgetの属性を変更して背景色を変更すると、色は変わりますが
>パレットの変更ダイアログのプレビュウィンドウのPushButtonは変化せず
centralWidgetのpalette属性を継承させて、その中に配置された
PushButtonの色を反映させたいときは、
centralWidgetのpalette属性の色役割の”Button”というところが
変わっていなければならないんだけれど、そうなっている?
>なおかつ、リビルド実行するとセントラルウイジェットの色も元のまま
プロジェクトフォルダの中のどこかにできるui_で始まるファイルを
削除してからリビルドするとどうなる?
こちらの環境では、このファイルが更新されないときがある(原因不明だけど)。
(注意!!!)*.uiファイルにあらず、ui_でファイル名が始まるほう。
0981979
2009/10/02(金) 15:30:43>centralWidgetのpalette属性の色役割の”Button”というところが
変わっていなければならないんだけれど、そうなっている?
ここも変更しています。
と、ui_mainwindowh何ですが、削除してリビルドしても反映されません
いろいろご指導いただいてありがとうございました。
この件については断念
来世でまたお会いしましょう
0982デフォルトの名無しさん
2009/10/03(土) 01:47:450983デフォルトの名無しさん
2009/10/03(土) 08:52:09暗くなったまま選択できないのですが、どうすれば選択できるようになるのでしょうか?
0984デフォルトの名無しさん
2009/10/03(土) 09:18:39複数のウィジェットを選択してからならできます。
0985デフォルトの名無しさん
2009/10/03(土) 19:11:050986デフォルトの名無しさん
2009/10/03(土) 20:54:35VCでいうところのTEXTマクロのようなものはありますか?
0987デフォルトの名無しさん
2009/10/03(土) 21:53:51コンパイラは何?
MinGWのgccとか?
0988デフォルトの名無しさん
2009/10/03(土) 22:34:19というかそういうことは
C++相談室 part72
ttp://pc12.2ch.net/test/read.cgi/tech/1251773567/
で聞いてくれないかな?
0989デフォルトの名無しさん
2009/10/03(土) 22:40:20言葉が足りないだけで、QStringに変換する方法を聞きたかったのかも。
どうなのか分からないけど。
0990デフォルトの名無しさん
2009/10/03(土) 22:41:16そうです
win32-g++を指定しています
ソースコードの文字コードをUTF8にしてQObject::tr()を使うってことでいいんでしょうか?
その場合QtCreatorがデフォルトで使用する文字コードはどこで指定すればいいんでしょう?
メニューバーからファイル毎に変更する方法は分かったのですが…
0991デフォルトの名無しさん
2009/10/03(土) 22:43:59Qtとは関係ない問題なんでしょうかね…出直してきます
0992デフォルトの名無しさん
2009/10/04(日) 01:29:09Qtに関係ある問題だと思うから出直さなくていい。
0993デフォルトの名無しさん
2009/10/04(日) 02:53:22プロジェクトごとの設定なら、プロジェクトを開いてから、左のモードセレクタから
プロジェクトをクリックし、プロジェクト設定をしたあと、
エディタの設定のところにデフォルトの文字コードを指定するところがある。
テンプレートから作成したプロジェクトに含まれるファイルがそれに対応するか否かはたしかめていないけど。
でも新しく作るファイルは対応するんじゃないかな。
Qt Creator全体のデフォルトは知らない。もしかしたら上の方法で切り替わるのかもしれないけど。
0994993
2009/10/04(日) 02:54:54訂正
>プロジェクトをクリックし、プロジェクト設定をしたあと、
プロジェクトをクリックし、プロジェクト設定を表示したあと、
0995993,987
2009/10/04(日) 02:57:54QStringもtr()もQTextCodecを使ってコーデックしている(ユニコードに変換している)。
そこで、QTextCodecのこのデフォルト値を変えればよい。main()関数などで、
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
または、
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("EUC-JP"));
などすればよい。すると、QStringのコンストラクターなどは、ふつうに日本語を含むchar*を
正しくエンコード(ユニコードに)変換して、内部で保持してくれる。
たとえば、
const char* const sampleCString = "日本語を含む文字列";
QString sampleString(sampleCString);
tr()についてのみそうしたいならば、下記のようにしてもよい。
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
または、
QTextCodec::setCodecForTr(QTextCodec::codecForName("EUC-JP"));
また、その都度指定するならば、QStringのstatic関数を呼んでもいい。
QString sampleString = QString::fromLocal8Bit("日本語を含む文字列");
0996993,987
2009/10/04(日) 02:59:11>>3
も読んでおくといいよ。
とくに、qDebug()のところ。
4月の話だけど、多分変わってないと思う。
リファレンス:
http://doc.trolltech.com/4.5/qtextcodec.html#details
http://doc.trolltech.com/4.5/qstring.html#details
http://doc.trolltech.com/4.5/qtextcodec.html
0997デフォルトの名無しさん
2009/10/04(日) 10:13:24入門 Qt 4 プログラミング
http://www.amazon.co.jp/%E5%85%A5%E9%96%80-Qt-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Jasmin-Blanchette/dp/487311344X/ref=sr_1_1?ie=UTF8&s=books&qid=1254618682&sr=8-1
の付録に詳しく書いてあるよ。
0998デフォルトの名無しさん
2009/10/04(日) 12:21:00デフォルトではLatin-1扱いなので日本語を直接書いたらだめ。
Qt内部の文字コードはUCS2(サロゲートペア対応)なので
Latin-1の文字ならUCS2変換されて格納されるが、それ以外の文字コードでは正しく変換できない。
日本語を使いたければ、tr(ASCII文字列)とし、翻訳機能で翻訳するのが基本。
(Qt Assistant http://doc.trolltech.com/4.5/assistant-manual.html 参照)
どうしても使いたい場合は、main()のQApplecationインスタンス作成直後に
QTextCodec::setCodecForCStrings( QTextCodec::codecForName( "SJIS" ) );
のようにすれば、ソースコードをSJISにして、ソースコード内に直接書くことができる。
例 QString nameString( "名前" );
逆に言うのなら、ソースコードにマルチバイト文字を使いたいのなら
マルチバイトを使ってソースコードを書き、そのソースコードの文字コードを
QTextCodec::setCodecForCStrings( QTextCodec::codecForName("文字コード ) ); と指定する。
0999デフォルトの名無しさん
2009/10/04(日) 12:22:56【RAD統合環境】 Qt 総合スレ 5 【Win/Mac/Linux】
http://pc12.2ch.net/test/read.cgi/tech/1254366507/
RADに進化させました!
1000デフォルトの名無しさん
2009/10/04(日) 12:23:5710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。