facebook twitter hatena line google mixi email
★お気に入り追加


  • 1
  •  
  • 2010/04/09(金) 15:12:36
クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)についてのスレ。

本家
ttp://www.wxwidgets.org/
wxWindows日本語プロジェクト
ttp://wxwindowsjp.sourceforge.jp/
Cross-Platform Programming with wxWidgets
ttp://wxwidgets.info/
Let's wxWidgets
ttp://dot-gray.s33.xrea.com/
wxWindowsで始めるC++ GUIプログラミング
ttp://www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
ttp://0xcc.net/pub/uu-2004-08/

前スレ
【GUI】wxWidgets(旧wxWindows) その4【サイザー】
http://pc12.2ch.net/test/read.cgi/tech/1214657360/

ここまで見た
  • 573
  •  
  • 2013/10/17(木) 12:18:17.29
>>572
どうしてるんだろうな
そのプロジェクト...

ここまで見た
  • 574
  •  
  • 2013/10/20(日) 16:58:10.15
wxTcl

ここまで見た
  • 575
  •  
  • 2013/11/05(火) 22:48:07.34
3もRC2まで行ってるし、次は今月中に正式版出るかな

ここまで見た
  • 576
  •  
  • 2013/11/05(火) 23:10:06.75
出たとしたらLinuxのパッケージにwx-3.0が出て使えるようになる
楽しみ

ここまで見た
  • 577
  •  
  • 2013/11/13(水) 21:36:52.45
3.0.0キテタ━━ヾ(゚∀゚)ノ━━!!

ここまで見た
  • 578
  •  
  • 2013/11/14(木) 22:26:30.66
おいおい3.0だぞ?出たんだぞ?なんでこんなに盛り上がんないんだよ…

ここまで見た
  • 579
  •  
  • 2013/11/14(木) 23:36:17.18
メインの機能追加がUnicode対応だからなぁ
今までも別に日本語使えなかったわけではないし

ここまで見た
  • 580
  •  
  • 2013/11/14(木) 23:52:35.30
何言ってだこいつ
unicodeは前から使えてるっての

所感
・Mac向けビルドの安定化
・wxwebviewが全ポートで使える
→ ネットワーク接続して、html, Javascriptの解釈可能に
・aui系のバグ修正と見た目の品質向上
・c++11, clang対応
・その他即死系のバグ修正

間違ってたらすまん
とりあえず2.9で出てたバグは直ってるはず

ここまで見た
  • 581
  •  
  • 2013/11/15(金) 00:03:58.47
あと>>364で出てたUTF-8以外の文字列からの変換とかどうなったんだろ
うまく変換できてるなら嬉しいけど

その他にもクラスは2.8の時より増加してるよね

ここまで見た
  • 582
  •  
  • 2013/11/15(金) 00:55:39.31
MinGW gcc + wxWidgets 2.8.12で作っていたプログラムを3.0.0で作り直したら、
ウィンドウリサイズ時のwxStaticText、wxCheckBox、wxListBoxのフリッカーが見るに耐えんレベルになった。
かと言ってSetDoubleBufferを使うとリサイズがモタつく上に、何故かwxRadioBoxの枠線が消えるんだよなー。
仕方ない、一つ一つwxEVT_ERASE_BACKGROUNDを潰す作業を初めるか…。

ここまで見た
  • 583
  •  
  • 2013/11/15(金) 03:59:07.98
gcc4.8で動くなら使う
x86_64-w64-mingw32じゃ、2.9はとうとうビルドさえ無理だった

ここまで見た
  • 584
  •  
  • 2013/11/15(金) 04:14:31.91
4.8だとやっぱりcc1plusが停止した、しかも2.9と同じファイル
公式から落としてきたライブラリ使ってもリンクに失敗
4.7ならライブラリのビルドもリンクも問題なし

ここまで見た
  • 585
  •  
  • 2013/11/15(金) 05:11:08.20
あ、やっぱ出来た
パラレル無しでビルドするか>>543
CXXFLAGS='-fno-keep-inline-dllexport'
をつけると大丈夫みたい、後者だと1度止まるけど再ビルドすれば通るしサンプルもビルド出来た

ここまで見た
  • 586
  •  
  • 2013/11/15(金) 06:44:39.98
連投失礼、>>584-585は見なかった事にしてね
当方の環境、win7 64bit msys上からビルド、gccは4.9、静的リンクでビルド

configureにCXXFLAGS="-fno-keep-inline-dllexport"をつけてもevent.cppで止まる
その時あらためてmake CXXFLAGS="-fno-keep-inline-dllexport"としてビルドすると通る

gcc4.8だと2.9はビルドでこけるしリンクも失敗するってのは国内外でよく見かけたし、実際俺も
あきらめてたけど…ひょっとして2.9もこの方法で通ったのかなあ。

でも、なぜかサンプルのimage.exeだけ強制終了した(ビルドは可能)

ここまで見た
  • 587
  •  
  • 2013/11/15(金) 07:29:00.37
VCでやったほうが実行速度速くなるんじゃないの

ここまで見た
  • 588
  •  
  • 2013/11/15(金) 07:40:36.25
VC++?知らない子ですね…

ここまで見た
  • 589
  •  
  • 2013/11/15(金) 07:53:20.59
損してると思うよ

ここまで見た
  • 590
  •  
  • 2013/11/16(土) 00:14:03.66
constexprも使えないコンパイラは要らないんですよ

ここまで見た
  • 591
  •  
  • 2013/11/16(土) 00:58:40.41
メタプログラミングって奴でしょ?
何が何だかサッパリ分からないよー。
つまり俺にはまだ早い代物だという事は承知してるが、
どういう用途で使うものなのか教えてほしい。

ここまで見た
  • 592
  •  
  • 2013/11/16(土) 03:33:03.68
wxと同時に浸かって委員会

ここまで見た
  • 593
  •  
  • 2013/11/16(土) 03:39:24.39
GCC3xの頃はvc++の方が速かった気がするけど、4.6から急激に速度が向上した気がする
あくまで自作プログラムでの話だけどね
ただ、gccでビルドされる様々なテストプロブラム見てるとvc++でビルドって安全性って意味
でヤバいんじゃないかって思っちゃうの

ここまで見た
  • 594
  •  
  • 2013/11/16(土) 04:27:47.92
>>591
実行時の計算オーダーを減らす機能。事前計算機能だね。
コンパイルタイムにできるだけ計算して結果を出しておくことで実行時の計算量を減らす。
ネットの変人がそれでレイトレーシングやったりしてる。
C++14のやつはそれなりに簡単だよ。

ここまで見た
  • 595
  • 590
  • 2013/11/16(土) 09:47:07.37
>>590はちょっと冗談気味だが
正直VC++はC++とは言えない
C++の機能を最大限活かす/楽しむにはgccやclangを使うべきだと思います
会社でプログラム書けと依頼されたらもしかしてVC++使うかもしれないけど

ここまで見た
  • 596
  •  
  • 2013/12/28(土) 16:23:57.98
chrome のブックマークバー、 IE のお気に入りバーのようなコントロールクラスを探しています。
全てのアイテムが編集可能でアイコンとテキストが表示されて
そのアイテムの値のテキストを編集できるメニューを作りたいのですが
最適なコントロールクラスはどれか教えてください。

wx.Menu を使おうと思ったのですが、
右クリックやコンテキストメニューのイベントが Bind しても呼び出されず苦戦しています。

wx.ListCtrl を使った場合は右クリックのイベントは受けられるのですが、
左クリックのイベントが wx.EVT_COMMAND_LEFT_CLICK のみで
これは MS Windows のみと書いてあるのでできたら使いたくありません。
これらのイベントについても誤りがあれば教えて欲しいです。

環境は wxPython 2.8-msw-unicode です。
よろしくお願いします。

ここまで見た
  • 597
  •  
  • 2013/12/28(土) 17:54:40.37
>>596
理想の実装になるかわからない&C++しかわからないが
wxMenuをそのまま使うのが良いと思います

実装の骨子
・メニューの項目一つ一つにwxWindowID ( enum )を振る
・wxWindowIDはwxCommandEventで起動するようにしておく
・上記のwxCommandEventを処理する関数はenumをswitch文で処理する
・wxCommandEventはEVT_MENU_RANGEで定義しておく(enum値が 1000~1200の場合反応する関数を作るなど)

アイテムを編集可能にするために
・EVT_UPDATE_UIをwxMenuに設定しておき、ユーザーがメニューの項目を触ったら更新を実施

右クリック
・wxのConnectとかBindでwxMouseEventをくっつければいいと思う

-------------------------------------------------------

上記をやろうとすると、ユーザーが設定した項目でループを回して常に更新かける
感じになるんじゃないでしょうか。

wxMenu *menu = new wxMenu;
wxMenu *foo  = new wxMenu;

for ( ユーザーが設定した数だけループ ) {

foo->Append(wxID_HOGEHOGE_RANGE + i , wxT("ユーザー設定項目1"));
foo->Connect(); // 右クリックイベントを定義しておく
}

ここまで見た
  • 598
  • 596
  • 2013/12/29(日) 12:00:00.67
>>597 レスありがとうございます。

wxMenu に対して Connect/Bind を試してみたのですが、
クリックイベントは wxEVT_MENU または wxEVT_MENU_RANGE だけが呼び出されました。

LEFT_UP, RIGHT_UP, COMMAND_LEFT_UP, COMMAND_RIGHT_UP, CONTEXT_MENU のイベントを試しましたが、
こちらは EVT_MENU の有無にかかわらず呼び出されませんでした。

試したソースコード : http://codepad.org/S9vtw4yX

wxEVT_MENU の際に右クリックか左クリックかわかれば処理を分岐できるのですが、
wxCommandEvent でクリックしたボタンの情報の取得方法がわかりません。

wxWindow::PopupMenu では wxMenu を参考にして GUI を作り出すようですが、
そこですでにイベントが途絶えているように思えてしまいます。
ウィンドウハンドルも得られないようだし、
ポップアップメニューにイベントを追加することはサポートされていないように感じます。

wx.ListCtrl でも思ったことなのですが、
wx.CommandEvent 系のイベントを使うコントロールクラスでは
wx.MouseEvent 系のイベントは関連付けられないのでしょうか?

ここまで見た
  • 599
  •  
  • 2013/12/29(日) 12:26:46.93
>>598
う〜ん、メニュー上での右クリックは悲しいことにできなさそうね

[wx-users] Trapping wxMouse events over wxMenus
https://groups.google.com/d/msg/wx-users/xAGPwk-f9Ao/0BGV9JD55L4J

この会話の中で、Vadimさん(wxWidgetsのコミッタ)が無理やでとか言ってる
メニューの項目の中で右クリックするとイベントはメニューのほうに行ってしまう
から、そのイベントをつかむのは無理だと。
で、それはWindowsとGTKのネイティブ実装がそうなっているから。

> Ideally, I would like to be able to left-click and
> right-click WITHOUT the menu disappearing.
This is impossible under the two main platforms: MSW and GTK. Menus grab
the mouse when popped up (down?) and so all mouse events go to them.

ここまで見た
  • 600
  •  
  • 2013/12/29(日) 12:34:09.46
いや、ちょっと違うか
メニューの右クリックイベントは掴めるけど
その時呼び元のメニューの項目が消えるといってるのか

その解決策としてはwxMenuを使わずに
menuのウィジェットを自分でエミュレートするしかないとのこと

ここまで見た
  • 601
  •  
  • 2013/12/29(日) 13:16:30.36
>>599-600
ありがとうございました。
wxMenu を流用できないのは残念ですが、
これで踏ん切りがつけたので、 wxListCtrl を使ったものを試そうと思います。

引き続き、wxListCtrl のような wxControl 派生に対して
wxMouseEvent 系のイベントをつける方法を求めていますので
何か参考になることがありましたらよろしくお願いします。

ここまで見た
  • 602
  •  
  • 2014/01/27(月) 14:20:14.73
了解

ここまで見た
  • 603
  •  
  • 2014/01/27(月) 14:35:57.41
>>601 です。 >>596 について進展したので参考になればと思い報告します。

メニューアイテムの上で右クリックしてポップアップメニューを表示することが可能なクラスが wxPython にありました。
wx.lib.agw.flatmenu がまさにぴったりのクラスでした。
RIGHT_UP のイベントはありませんが、 FlatMenuItem::SetContextMenu(FlatMenu) で >>596 でしたいことが簡単にできます。
自作のために PopupWindow あたりを調べているときに見つけました。

また何かありましたらよろしくお願いします。

ここまで見た
  • 604
  •  
  • 2014/02/26(水) 17:32:22.79
サンプルが多すぎて逆にわからないのですが、
ランタイム時にGUIパーツを生成消滅させることって可能ですよね?
例えばユーザが読み込んだファイルによってボタンの数を変化させるなど

ここまで見た
  • 605
  •  
  • 2014/02/26(水) 17:48:08.47
マジレスすると
出来ますよ

ここまで見た
  • 606
  •  
  • 2014/02/26(水) 18:02:12.58
ありがとうございます
関連するサンプルなどありましたら教えていただけると幸いです

ここまで見た
  • 607
  •  
  • 2014/02/26(水) 18:06:08.80
きっと君のHDD(SSD)に既に入ってるよω

ここまで見た
  • 608
  •  
  • 2014/02/26(水) 18:19:55.82
そうなんですよね〜でもsample多くてどっから見ればよいか、という感じです
まあできるということがわかればとりあえず見て回ります

ここまで見た
  • 609
  •  
  • 2014/02/26(水) 18:34:00.97
チュートリアルで最初の方から見ればすぐ出ると思う。

ここまで見た
  • 610
  •  
  • 2014/02/26(水) 18:38:10.36
デモ実行してみて自分の欲しい機能と似たものを見つけたら「ソースを見る」をクリック。

ここまで見た
  • 611
  •  
  • 2014/02/26(水) 18:44:29.66
すいません、見てるものが違うかもしれないので確認させてください
チュートリアルとは何を指してますか?
デモはdemosフォルダの中にあるプロジェクトですよね?「ソースを見る」とはなんでしょうか?

ここまで見た
  • 612
  •  
  • 2014/02/26(水) 18:48:03.88
ごめん。
見てるものが違った。
wxPython の方見てた。

ここまで見た
  • 613
  •  
  • 2014/02/26(水) 18:53:20.95
wxPythonのDemo見て目星を付けて
wxPythonのソースを参考にwxWidgetsでCソース書くのもあり

ここまで見た
  • 614
  •  
  • 2014/02/26(水) 19:08:22.51
なるほど
wxPythonでコードを書いたものがC++に直接変換できたりしたら便利ですね
wxGladeみたいに

ここまで見た
  • 615
  •  
  • 2014/02/26(水) 20:20:43.75
なんか久しぶりにwxスレが伸びてるぞ、新規ユーザー大歓迎
ボタンとかテキストエリアの動的な生成は、wxPanelとかwxSizerを使った簡単なサンプルを作ったら理解できると思う
言葉で説明するよりコード書いたほうがよいけど一応書いとく

例えばボタンを生成・削除しようとする場合
親Panelをparent, 子panelをchildとすると

1. ウィジェットの生成:parentをnewして、必要な分だけchildをnew
child = new wxPanel(parent, …);
...

2. ウィジェットの削除:parent.DestoryChildren();
この関数で子ウィジェットを全部きれいに削除できる

説明の意味がわからなければ、まずは適当なチュートリアルサイトに行くべし
おすすめ
http://zetcode.com/gui/wxwidgets/

ここまで見た
  • 616
  •  
  • 2014/02/26(水) 20:22:35.51
>>614
慣れたら直接C++で書けるから多分コンバータは需要無いよ

ここまで見た
  • 617
  •  
  • 2014/02/26(水) 20:29:50.32
>>615
詳しくありがとうございます
拝見致します

>>616
wxGladeも要りませんかね?
フローはwxGladeで枠を作って機能をC++で書く感じになるのかと

ここまで見た
  • 618
  •  
  • 2014/02/26(水) 20:30:17.32
そのくらい wx は良く出来てるね。

ここまで見た
  • 619
  •  
  • 2014/02/28(金) 21:18:50.52
Qt以下の品質。gtkならcで書けた。

ここまで見た
  • 620
  •  
  • 2014/03/01(土) 00:37:16.59
そらQtのほうがメジャーやろ、死ね

ここまで見た
  • 621
  •  
  • 2014/03/01(土) 01:40:12.84
どっちも1992年頃にできた。OSSといえども商業的な成功がコミュニティ形成の鍵。
それ以外はGood Oldを懐かしむロートルか宗教的価値観に支えられているだけ。

ここまで見た
  • 622
  •  
  • 2014/03/01(土) 01:51:22.19
GUI比較スレってなんだよね・・・
比較的な話ってここで展開してもよいものやら
というかwxWidgetとQtどっちも使ってる人っているのか

ここまで見た
  • 623
  •  
  • 2014/03/01(土) 02:28:31.91
世の中のアプリケーションはQtかAwt/Swingが採用される流れ。
直交性ならgtk。サクッと安定したものを書くならtk。
トイプログラムならSDL+OpenGL。生きるとは残酷なことである。

砂時計アラームタイマー
フリックゾンビ
ここまで見た

★お気に入り追加

このページを共有する
facebook twitter hatena line google mixi email
おすすめワード