Hatena::ブログ(Diary)

はけの徒然日記 このページをアンテナに追加 RSSフィード

2005 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 08 | 09 | 10 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 |
2011 | 01 | 02 | 03 | 04 | 11 | 12 |
2012 | 02 | 03 | 05 |
2014 | 02 | 03 | 04 | 05 | 12 |
2015 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 04 | 05 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 |

2007-11-02(Fri)

QTKFileDialogをコンパイル

復活したTKmixさんトコでQTKFileDialogのソースが公開されてましたので勉強がてらコンパイルしてみました。コンパイル環境はdev_img-1.6です。

ソースにサンプルが付属してたので、そのままコンパイルしたらmainが無いよというエラー(^^ゞ 以前qtアプリ勉強で使ったmainを使ってfrmSamleを呼び出したらできました。


気が付いたこと


ソースQTアプリ作る上でかなり勉強になると思うので参考にさせてもらいます。


  • main.cpp
#include <qpe/qpeapplication.h>
#include <qtextcodec.h>
//#include <qfont.h>

#include "frmSample.h"

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

	// この2行が無いとtrで日本語を書いたときに化ける
	QTextCodec* codec = QTextCodec::codecForName("eucJP");
	a.setDefaultCodec(codec);

//	Hello *hello = new Hello(0, "top");
	frmSample *hello = new frmSample();

	a.showMainWidget(hello);
	return a.exec();
}
$ progen -o qtkfiledialog.pro
$ tmake -o Makefile qtkfiledialog.pro
$ make
$ ./qtkfiledialog

2007-09-15(Sat)

アプレットをいじる

ちょっと見ないうちにサムさんトコのclockappletがエラく進化していてビックリしました。そんなわけでソース勉強です。

とりあえず分かったこと

Configクラス

設定ファイルの設定値を簡単に読み書きできる。ザウルスだとデフォルトで~/Settingsの下ってことになってるみたいですけど、パスの指定はどこかでできるのかな?

このクラスRuby/Qte勉強の時に存在を知りましたがRubyではメリットを感じなくて使ってませんでしたけどC++だと便利ですね。

Config config( "clockapplet" );    設定ファイル指定
config.setGroup( "Font" );         ファイル内セクション指定、この場合は[Font]
bool var = config.readBoolEntry("Item", var);       ファイル内のItemの値を変数に読み込み、値0:false?
int  var = config.readNumEntry("Item", var);       同上、でも何で変数名を2回書かないといけないの?
QString var  = config.readEntry("Item", var);       同上、二番目の引数はデフォルト値でした。

config.writeEntry("Item", var);                   ファイルに書き込むときは型の違いは気にしない?

ところでConfigクラスドキュメントって何処にあるのでしょう(^^ゞ

アプレットの順番

clockappletimpl.cpp内のint ClockAppletImpl::position() const戻り値

数が少ないほどタスクバー上で左になると思われる。


外部コマンド

Global::execute( "command" );

これで時計設定画面以外のアプリも起動できた。これもQtopiaのリファレンスに載ってました。


改行

タスクバーに表示する文字が二段にできるとは驚きました。普通のLabelなんかと同じ感覚なんですね、三行もできましたけど二行目が中心にきて上下の一行目と三行目は半分のみの表示になりました。

      • 良く見るとQLabelを継承してるんだ、できて当たり前。

文字数(幅)

とりあえず横一杯になるまでは表示できそうな雰囲気ですね。ただし起動中のアプリアイコンQTボタンがはみ出してしまいました。↓はZEditorとターミナルを起動しています。ちなみに追加したアプレットポジション値は5です。

f:id:hake:20070915203431j:image

この状態でビュースタイルにすると音量アイコンより右がはみ出しました。


不明点
  • ソース上でシグナルとして書かれてるtimeChanged()とclockChanged( bool )は多分外部からくると思うんだけどqcopで送ったりとかできるのでしょうか。もしできたら面白いんだけどね。
      • 二つのシグナルはQPEApplicationに載ってた。
  • 文字の代わりにアイコンを表示させたい場合はQLabelの代わりに何使えば良いのだろう?
  • アプレットってsoなファイルが生成されますが、作成にあたって普通の実行ファイルとの違いがよくわからんです。

2007-09-05(Wed)

アプレットなプログラム

サムさんトコでClockAppletの置き換えの話題が出てました。前からアプレットってどうやって作るんだ?と思ってたのでこのくらいの短いプログラムだと非常に勉強になりますね。

ところで自分も試してみたいと思ったのですがclock.hがみつかりません(^^ゞ 

自分の持ってるqtopia-free-1.5.0-1.i386.rpmには入ってないのかなぁ? 朝は時間がないのでまた後ほど探しますorz


ありました、ソースqtopia-free-1.5.0-1.src.rpmの中でした。ちなみにファイルこちらからダウンロードさせていただきました。

で、cppだけサムさんのに入れ替えてdev_img-1.6でコンパイル、もともとのMakefileではエラーになったのでtmakeで新規に作り直しました。makeしたら、なんかいきなりインストールまで行くんですけど、危険だな(^^ゞ とりあえずproファイルを書き換えてからtmake→make

できたsoなファイルをオリジナルと入れ替えて

qcop QPE/TaskBar reloadApplets()

うん、日付が出るようになりました。

追記

いろいろ書き換えて試してますけどファイルを置き換えた時点でQtopiaが再起動することが多々あり、再起動後は正常動作してます。


さて、中身の勉強だ。