トップページtech
981コメント348KB

【GUI】wxWidgets(旧wxWindows) その3【サイザー】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/09/09(土) 00:06:30
クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)について語りましょう。

本家
 http://www.wxwidgets.org/
wxWindows日本語プロジェクト
 http://wxwindowsjp.sourceforge.jp/
Let's wxWidgets
http://dot-gray.s33.xrea.com/
(*)準備中(*)
http://www.geocities.co.jp/SiliconValley-Cupertino/8526/
wxWindowsで始めるC++ GUIプログラミング
http://www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
http://namazu.org/~satoru/pub/uu-2004-08/
dW : Linux : wxWindowsの概要
 http://www-6.ibm.com/jp/developerworks/linux/010413/j_l-wxwin.html
SunWorld Online:wxWindows――無名だが成熟したGUIツールキット
 http://www.idg.co.jp/sw/back/200102/20010219_01_report.html
0616デフォルトの名無しさん2008/02/03(日) 03:26:45
>>615
>特別なにもしてないと静的リンクにならないんでしょうか。

つ ldd
0617デフォルトの名無しさん2008/02/03(日) 03:52:29
>>615
>>558-563
0618デフォルトの名無しさん2008/02/03(日) 04:42:37
スレ違い
C初心者スレ池
0619デフォルトの名無しさん2008/02/03(日) 04:58:13
>>615
>今度は何も生成してくれない。
>のはなんででしょう。。

太陽が眩しかったから
0620デフォルトの名無しさん2008/02/03(日) 09:23:53
Linux が素人にも使いやすくなって、Windows のコマンドラインと
Unix のシェルの違いもわからないひとが GUI プログラムを
コンパイルできるようになったというのは良いことなのやら悪いことなのやら ...
0621デフォルトの名無しさん2008/02/03(日) 10:04:57
ただの馬鹿なのが問題なんだ。
たとえ素人でも疑問を追及する意思があれば間抜けな質問を垂れ流したりはしない。
0622デフォルトの名無しさん2008/02/03(日) 17:02:57
>>612について情報をお持ちの方は居ませんでしょうか…
0623デフォルトの名無しさん2008/02/09(土) 00:36:25
みんなemacs(Meadow)上でwxWidget使ったコード書くとき、modeどうしてる・・・?
通常のc++-mode設定だとインデント壊れて気持ち悪いよね?
(sample/minimal/minimal.cppに対してindent-regionすると120行目のMyApp::OnInit()が1インデント下がる)

ttp://www.wxwidgets.org/develop/standard.htm#indentation とかの設定もみたけど、
wxWidgetのマクロによるインデントずれの問題は解決してないように見えるんだが・・・
0624デフォルトの名無しさん2008/02/10(日) 02:46:40
すいません、お聞きしたいのですが、
ボタンが押されたらアプリを終了するようにしようと思い、

class MyFrame: public wxFrame {

protected:
wxButton* button_1;
}; // wxGlade: end class

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_BUTTON(button_1, MyFrame::OnExit)
END_EVENT_TABLE()

void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event))
{
Close(TRUE);
}

みたいに書いてみたのですが、(はしょりまくってます)
コンパイルしようとすると
hello2.h:31: error: invalid use of non-static data member ‘MyFrame::button_1’
hello2.cpp:13: error: from this location
のようなエラーが出ます。

どこがおかしいでしょうか??
初心者質問ですいません。
0625デフォルトの名無しさん2008/02/10(日) 08:14:57
普段Windows使ってるのでよく分かんないんですが、EVT_BUTTONの後に
指定するのは変数名ではなくて、多分wxButtonをnewする際に指定する
コマンドID(wxID_EXITとか)かも…。
EVT_BUTTON(wxID_OK, MyFrame::OnExit)

MyFrame::MyFrame(...)
  button_1 = new wxButton(this, wxID_EXIT, wxT(“OK”),
wxPoint(200, 200));
  :
06266252008/02/10(日) 08:16:38
orz…
EVT_BUTTON(wxID_OK, MyFrame::OnExit)

EVT_BUTTON(wxID_EXIT, MyFrame::OnExit)
0627デフォルトの名無しさん2008/02/10(日) 13:07:31
>>623
おれはDECLARE_EVENT_TABLE()とかの後ろにセミコロンを置いてる。
0628デフォルトの名無しさん2008/02/12(火) 09:52:51
wxWigetsのiniファイル読み書き専用関数とかあるんでしょうか?
0629デフォルトの名無しさん2008/02/12(火) 13:20:18
>>628
http://wxwindowsjp.sourceforge.jp/html/2.8.4/wx_wxfileconfig.html
06306282008/02/12(火) 13:24:31
サンクス。やっぱこういうのが標準であると便利ですよね。
0631デフォルトの名無しさん2008/02/12(火) 18:16:41
wxWigetsのStringListはありますか?
0632デフォルトの名無しさん2008/02/12(火) 19:43:35
>>631
つ wxArrayString
06336312008/02/13(水) 09:46:38
有難うございます。

wxArrayString.Text (Itemを改行コードを挟みながら連結)みたいなメソッドは無いんですね。
自作するしか無いか。


関係ないけど、やっぱ改行コードってC++のendlを使いますよね?
まさか、wxWidgetsで、CRとかLFをラップしてくれてたりしないですよね?

出来れば、wxWidgetsが改行コードのグローバル変数を持ってて、
初期処理でどのプラットフォームでもCRLFで初期化してやろうかと思ったのですが。
06346312008/02/13(水) 09:50:17
>関係ないけど、やっぱ改行コードってC++のendlを使いますよね?

wxWidgetsのヘルプ読んでると、
>std:string互換関数の利用が強く推奨される!
>そして遅かれ早かれstd::stringを使い始めるであろうwxWidgetsの将来のバージョンとの互換性を保つ.
とあるから、
wxStringより、std::string推奨なんですね。

文字列についてはC++の標準を使えって意味は分かるけど、std::stringって機能が弱いおね。
0635デフォルトの名無しさん2008/02/13(水) 10:57:42
>>634
>std::stringって機能が弱いおね。
たとえばどんな?
0636デフォルトの名無しさん2008/02/13(水) 11:00:08
std::stringだと、

string str1;
str1 = "a" + (string)"b";
みたいに書けないことない?(自分の勉強不足かも)

それとか、UpperCaseが無いわけじゃないけど、書きにくかったりとか。
0637デフォルトの名無しさん2008/02/13(水) 11:11:28
string std::operator+(const char *lh, const string &rh);
は標準で入ってたと思う。
0638デフォルトの名無しさん2008/02/13(水) 11:18:50
あ、+ 演算子は実装されてますか。

gccでエラーだったんですが。(勘違いかも)
0639デフォルトの名無しさん2008/02/13(水) 11:47:01
MinGW gcc3.4.5では大丈夫だね。
0640デフォルトの名無しさん2008/02/13(水) 16:26:50
STLって、MemoryStreamみたいな可変バイト列ってありましたっけ?

vector char とかするのかなぁ?

(ちょっとスレチ)
0641デフォルトの名無しさん2008/02/13(水) 16:41:34
stringstream
0642デフォルトの名無しさん2008/02/13(水) 16:48:22
>>641

どうも。それ使います。insertメソッドとかもありますね。
NULLで切れないと信じて。
0643デフォルトの名無しさん2008/02/13(水) 18:30:57
>string str1;
>str1 = "a" + "b";
は書けます。

>str1 += "a" + "b";
は書けないんですね。

ちょっと不便。
0644デフォルトの名無しさん2008/02/13(水) 19:04:47
全然
0645デフォルトの名無しさん2008/02/13(水) 20:10:56
べつに
0646デフォルトの名無しさん2008/02/13(水) 20:38:05
str += "a";
str += "b";
は出来るだろ。
ていうかC++スレでやるべきだと思うんだ・・・。
0647デフォルトの名無しさん2008/02/13(水) 21:58:27
ま、C++だしな。
そのへん楽したかったら、
wxPython
wxErlang
wxHaskell
wxLua
wxPerl
wxRuby
wxSqueak
wx4j
wxJavaScript
あたり使ったらいんじゃね?
0648デフォルトの名無しさん2008/02/13(水) 22:16:15
C/C++は
"a" "b"
って書いたら
"ab"
って書いたのと同じだけどな。
リテラルだけだが。
0649デフォルトの名無しさん2008/02/14(木) 10:58:06
> wx4j

へえー、4j ってプログラミング言語があったのか・・と思った
ググって見ると、・・このスレのテンプレにすでに書いてあった・・
0650デフォルトの名無しさん2008/02/15(金) 17:55:06
1、プロセスを跨いだ書き込みができるコンソールクラスはありますか?
 (wxで無くともポータブルなら何でもかまいません)

2、↑を押すと以前選択された文字列が出てきたり、
  選択可能な文字列群を設定すればtabキーで勝手に補完してくれる
  なんちゃってシェルのようなクラスはありませんか?

よろしくお願いします。
0651デフォルトの名無しさん2008/02/15(金) 20:59:46
2番目はreadlineじゃ駄目なのか?
0652デフォルトの名無しさん2008/02/16(土) 00:34:08
>>651
readlineってこういう事に使うライブラリなのですか。
初めて知りました^^

これで全然問題ないです。
どうもありがとうございました。
06536242008/02/16(土) 00:48:57
>>625 さん
返信めちゃくちゃ遅れてすいません。
ご指摘された通り直したら意図した通りに動きました。
ありがとうございましたm(_ _)m
0654デフォルトの名無しさん2008/02/16(土) 01:22:37
>>652
readline はガチガチの GPL なので、代わりにより自由な libedit をお勧めする

http://sourceforge.net/projects/libedit/
0655デフォルトの名無しさん2008/02/16(土) 09:51:47
>>654
自分も探しましたよ。ストールマンの呪縛から逃れるために^^

そこのlibeditの最終リリースが2001年8月だったので
何じゃコリャと思ってしまったのですが、
Googleで探してみるとちゃんと新しいのもあるみたいですね。
ただ、マルチバイトが使えない&直すのは難しくないが「需要がない」
という内容のMLを見たときは少しびっくりしました。
0656デフォルトの名無しさん2008/02/16(土) 12:28:10
たしかにコンソールで日本語打ちたいと思うケースはあまりない
0657デフォルトの名無しさん2008/02/16(土) 13:05:57
> cd C:¥デスクトップ¥夏休みの宿題¥プロジェクト1¥宇宙シミュレータ
> bigbang.exe 初期値1.xls > 結果1.xls
0658デフォルトの名無しさん2008/02/16(土) 13:46:08
後々ターミナルからアクセスすることを考えると日本語ファイル名は打つのめんどくさいから付けない
0659デフォルトの名無しさん2008/02/16(土) 13:48:26
ubuntuの「デスクトップ」をどうにかしてください
0660デフォルトの名無しさん2008/02/16(土) 13:58:16
>>658
自分で作らなくても、仕事だと嫌ほど受け取る。
0661デフォルトの名無しさん2008/02/16(土) 14:52:22
>>655
あとは Tecla というのもあるよ
マルチバイトが使えるかは知らないけど…

http://www.astro.caltech.edu/~mcs/tecla/
0662デフォルトの名無しさん2008/02/16(土) 23:17:58
>>659
ディレクトリ名書き換えれたけど
0663デフォルトの名無しさん2008/02/17(日) 02:32:40
2.8.7リリースされてるけど最近は流行ってないの?

てかスレ違い?
0664デフォルトの名無しさん2008/02/17(日) 02:33:33
ごめん微妙に誤爆
0665デフォルトの名無しさん2008/02/17(日) 04:03:32
というか、流行ってた頃ってあったの?
0666デフォルトの名無しさん2008/02/17(日) 15:01:23
気づかずにお世話になってる人はいると思うがね
vlcとか
0667デフォルトの名無しさん2008/02/17(日) 21:57:27
vlcねぇ〜
あれってなんであんなにバイナリのサイズが小さいの?
VCとかで作ってるとどんなに気を使ってもMBサイズの大きさになってしまう・・・
0668デフォルトの名無しさん2008/02/17(日) 22:01:05
libwxwidgets_plugin.dll
2.66 MB (2,793,984 bytes)

こういうカラクリ
0669デフォルトの名無しさん2008/02/17(日) 23:55:57
あー、もしかしてライブラリをビルドするときにDLLでビルドすればいいのか
納得しました
0670デフォルトの名無しさん2008/02/18(月) 02:15:57
実行ファイルさえ小さければDLLが多少でかくてもそんなに文句は出ないという
意外と盲点かもしれないね
0671デフォルトの名無しさん2008/02/18(月) 23:25:28
てかサイズ大きくてもいいからDLL1ファイルだけってできないん?
0672デフォルトの名無しさん2008/02/18(月) 23:45:30
MONOLITHICのSHAREDじゃ駄目なのか。
試したことないが。
0673デフォルトの名無しさん2008/02/19(火) 18:56:33
wxWidgets用のRADツールはWinでならどれ使うのが良いでしょうか?
0674デフォルトの名無しさん2008/02/19(火) 20:28:21
どれを、と言うほど選択肢あるのか?

wxGlade, wxFormBuilder, wxDesigner, wxSmith, VisualWx...

あ、結構あるなw
0675デフォルトの名無しさん2008/02/19(火) 20:39:39
wxWorksってのも違うの?
0676デフォルトの名無しさん2008/02/19(火) 22:38:31
比較サイト見っけた
http://wiki.codeblocks.org/index.php?title=Comparison_of_wxSmith_features
0677デフォルトの名無しさん2008/02/19(火) 23:59:22
いやいや、DLL分けた分起動遅くなるだけじゃん。
Linuxのように、ディス取り標準ビルドの共有ライブラリが一つあってそれが基準になるなら良いけど、
Windowsではオレオレビルドのdllがまかり通るからstaticリンクが無難。
0678デフォルトの名無しさん2008/02/20(水) 01:17:48
wxってsetup.hでビルドオプション変更できるみたいだけど、
Linuxで共有ライブラリのビルドオプションが気に入らなかったら、
staticリンクにしろってことでいいのかな?
0679デフォルトの名無しさん2008/02/20(水) 11:10:38
>>678
UN*X 系は RUNPATH や LD_LIBRARY_PATH で対処する方が多いんじゃないかな。
wx みたいな、でかいライブラリを static にする事は殆ど無いと思うよ。
0680デフォルトの名無しさん2008/02/22(金) 01:10:25
wxPythonの2.6なのですが、
gridの任意のセルに、Ctrl押し下げ+マウスの左クリックイベントを送りたいのですが
どのようにすればいいですか?
だれかとっかかりだけでも教えてください。お願いします。
0681デフォルトの名無しさん2008/02/23(土) 03:00:16
wxDev-C++いれてみたけど
かなり頑張ってるな。
0682デフォルトの名無しさん2008/02/23(土) 20:04:15
wxwidgetsってエラーが出てコンパイルできねーんだけどやる気あんのか中の人。
0683デフォルトの名無しさん2008/02/23(土) 20:08:42
>>682
おまえはやる気あんのか?
0684デフォルトの名無しさん2008/02/24(日) 10:02:28
C言語でクロスプラットフォームなGUIプログラミングしようと思ったら
wxWigets or QT or GTK どれが良いですか?

wxWigets の環境をうまく作れなかったので、QT入れてみたのですが・・・。
0685デフォルトの名無しさん2008/02/24(日) 10:26:47
初体験するなら、恋人、ナンパ娘、風俗嬢の誰がいいですか?
恋人をうまく作れなかったので、風俗嬢に挿れてみたのですが・・・。
0686デフォルトの名無しさん2008/02/24(日) 10:31:45
>>684 が挙げた3つの中でC言語なのはGTK+だけ
0687デフォルトの名無しさん2008/02/24(日) 11:55:18
妹に一緒にお風呂に入ろうと誘われたんですがどうすればいいですか?
0688デフォルトの名無しさん2008/02/24(日) 15:11:32
>>685
初体験なのに3つも選択権をもっているような人は
このスレに来てはいけません

>>687
具体的に何を迷っているのか分からない。
なぜ考える必要があるの?
0689デフォルトの名無しさん2008/02/24(日) 16:07:33
妹=42歳(千代大海似)
0690デフォルトの名無しさん2008/02/24(日) 19:56:56
wxを使ってMindmapエディタを自作したいと思ってるんですが、
複数のテキストボックス(サークル)間にリンクを張って
表示するのに便利なモジュールってありますか?
# うまく説明できなくてすみません。

snapshotを見ると、UML図を書けるようなアプリはあるようですが、、、
0691デフォルトの名無しさん2008/02/24(日) 22:22:27
そんな程度の考えでマインドマップ作ろうってのは無謀な気がするが
それはおいとくとして、
けっこうプラットフォームによってまちまちな部分があるので、
マルチプラットフォームを考えてるなら、ありもののパーツで
なんとかならない場合はwxはやめといた方がいいかも。
たとえばマインドマップとかペイントソフトとかだとキャレットの操作が必要になると
思うけど、Win版はちゃんとネイティブのキャレットを操作してるが
GTK版なんかは自前でキャレットらしき棒を描く場所を変更してるだけ。
0692デフォルトの名無しさん2008/02/25(月) 00:33:32
wxGladeのTextCtrlのlayoutプロパティでoptionっていう項目がありますが、これってなんの値なんでしょうか??
0693デフォルトの名無しさん2008/02/25(月) 01:06:09
>>692
最近のはproportionと呼び名が変わったようだ。
>>523 の説明がわかりやすいと思う。
0694デフォルトの名無しさん2008/02/25(月) 09:50:19
親ウィンドウと子ウィンドウを連動しようと思い。
親ウィンドウのMoveEventから
子ウィンドウのMoveを呼び出したのですが、
エラー落ちしてしまいます。

何か方法があるのでしょうか?
06956922008/02/26(火) 01:20:38
>>693さん
なるほど。523見てなんとなく分かりました。
ありがとうございました。
06966942008/02/26(火) 08:35:58
コンストラクタ内でMoveEventが呼ばれ(たぶんCenter関数)
その時にはまだ子ウィンドウが生成されてなかった。

しかも初期化が完了してない無効なポインタだったので
当然エラーということだった

コンストラクタで始めに関数が呼ばれる前に
事前初期化してないとエライことになる可能性があるという教訓でした。
0697デフォルトの名無しさん2008/02/26(火) 16:20:52
メニューのフォントを変更しようと思い、
wxMenuBarにフォント設定したけど反映されない・・・
なぜ・・・
0698デフォルトの名無しさん2008/02/27(水) 09:25:53
wxMenuBar

wxWindowsを継承しるのになんでそのフォント使わないで
インラインで別のフォント使うのか理解できん。

0699デフォルトの名無しさん2008/02/27(水) 11:01:34
早くwx-usersに要望を出す作業に戻るんだ
0700デフォルトの名無しさん2008/02/27(水) 21:31:15
メニューバーが自前で描画するモノなんかあったっけ?
0701デフォルトの名無しさん2008/03/01(土) 00:38:09
wxWidgetsってWindows Mobile環境でも動作するんでしょうか?
あと、その場合、バインディング言語(wxPython等)でも利用可能なんでしょうか?
0702デフォルトの名無しさん2008/03/01(土) 09:36:44
http://wxpyce.wikispaces.com/
07037012008/03/01(土) 09:55:26
>>702
サンクスです。
0704デフォルトの名無しさん2008/03/03(月) 01:02:32
あるウィンドウのZオーダーを動かしたい(一番手前に表示したい)
のですがどうやればいいのでしょうか?
よろしくお願いします。
0705デフォルトの名無しさん2008/03/03(月) 01:36:52
>>704
Raise()
0706デフォルトの名無しさん2008/03/03(月) 18:51:07
2年以上開発版のままだったCode::Blocksが2/28に8.02をリリースしてた。
http://www.codeblocks.org/
0707デフォルトの名無しさん2008/03/03(月) 18:52:50
使えそう?
0708デフォルトの名無しさん2008/03/03(月) 19:22:07
>>705
できました。ありがとうございました
07097062008/03/03(月) 20:05:07
>>707
Fedora8で昔使ってみたときのプロジェクト試してみたけど、
Buildしたときのerrorとwarningが入れかわってる気がする。一応動いたけど。
ちょっと前にチェックしてたけど、
2、3日に一回くらい開発版だしてて追いつけなかったからリリースをまってた。
いろんなOSで動くところが好きなので、そのうち本格的に使うかも。
macportsにもきてた。
0710デフォルトの名無しさん2008/03/04(火) 01:37:13
wxGladeで画面を作成しているのですが、
widgetを配置する画面(Frameをダブルクリックして出てくる画面)に、
配置してあるボタン等が収まりきらなくなりました。
しかしながら、Previewで見るときちんと全部収まっています。
Panelを削除するとこの現象は出ないのですが、どこか作り方が
おかしいのでしょうか?
どなたか教えてください。
0711デフォルトの名無しさん2008/03/04(火) 01:50:20
>>710
Previewの方が正しい。
wxGladeを立ち上げ直すと直ることもある。
けど,まあそんなもんだと思っている。
07127102008/03/04(火) 23:36:30
>>711
レスありがとうございます。
そうですか。
Panelを捨ててしまうと、タブ移動が出来なくなるので困っていました。
wxGladeのバージョンアップに期待というところでしょうか?
sizerの入れ子の数とかでおかしくなるのかなー。
0713デフォルトの名無しさん2008/03/15(土) 16:00:25
wxRubyでXRCでGUI部分作って、メニューアイテムやら押したときにメッセージボックスを表示させたいんだがどうやればいいんだ?

ボタンを対象にfind_window_by_name('TEST')とかやって
evt_button(@update.get_id){
Wx::message_box("テストだよ", "test", Wx::OK | Wx::ICON_INFORMATION, self)
}
とかするとちゃんとメッセージボックスやらが出せるんだけど
find_window_by_name('MENUBAR')とかやってもnilが返ってきてしまうんだ…
0714デフォルトの名無しさん2008/03/15(土) 16:01:46
下がってるのであげてみることにする

ちなみにwxRubyについてるサンプルソース読むと、XRCのサンプルでもコード上でメニューバーとか追加してた
0715デフォルトの名無しさん2008/03/15(土) 20:02:14
事故解決した
Wx::Frame#get_menu_bar
ちぅのがあるのね…
■ このスレッドは過去ログ倉庫に格納されています